[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-devel
Subject:    Re: animation patch
From:       Eric Pouech <Eric.Pouech () wanadoo ! fr>
Date:       2000-08-31 19:14:20
[Download RAW message or body]

Jean-Claude Batista wrote:
> 
> Hi,
> 
> > > RLE8 decompression : each frame must be decompressed on top of the
> previous
> > > frame. This is because each image can contain only the differences
> between
> > > one frame and the next.
> > This is a (long known) bug in DIB code not in animate.c
> > RLE (with gaps) must draw on top of existing bitmap
> > so this shall not be fixed here but in X11 DIB handling code
> 
> Would there be a reason for not using SetDIBits instead of StretchDIBits (in
> ANIMATE_PaintFrame) ? By doing so, we would be able to preserve the last
> image and simply decompress the new frame over it.
SetDIBits should be fine here

to be exact, the bug is not in X11 driver, but in objects/dib.c in the fallback
case of StretchDIBits where the destination GDI driver doesn't support the
pStretchDIBits primitive (which is the case for the X11 driver)
in that case, the source DIB is first set to the destination dimension, then
blit:ed to the destination
for RLE encoded DIBs, we lose the current state of the destination DC and when
the RLE has gaps, there's garbage in them

so the fixes for StretchDIBits would either be :
- implement the X11 counter partt
- in the fallback case, when the DIB is RLE encoded then grab the destination
bmp's content before the stretchblt

for animate.c, SetDIBits would do just fine (and fix the animation blit) in a
consistent manner

A+
-- 
---------------
Eric Pouech (http://perso.wanadoo.fr/eric.pouech/)
"The future will be better tomorrow", Vice President Dan Quayle

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic