[32] Lister's canvas doesn't refresh with some animated GIFs

Bug reports will be moved here when the described bug has been fixed

Moderators: Hacker, petermad, Stefan2, white

Post Reply
User avatar
CJ Flash
Junior Member
Junior Member
Posts: 17
Joined: 2007-05-25, 16:55 UTC
Location: Cherepovets, Russia

[32] Lister's canvas doesn't refresh with some animated GIFs

Post by *CJ Flash »

Here's the screenshot: http://www.imagebam.com/image/3cfcd2151729266
Link to original file: http://www.imagebam.com/image/913ae6151728916

This bug is reproduced in all betas of TC 8.0 x32. As MVV suggested on russian forum, making of double bufferization can help in this case and also with flickering.
The past was yesterday...

TC 9.50ß6 64 Bit, #116718 Personal licence
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50475
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Confirmed with 32-bit only, thanks. The problem is that TC doesn't clear the background to avoid flickering, but the image seems to contain transparent parts...
Author of Total Commander
https://www.ghisler.com
User avatar
MVV
Power Member
Power Member
Posts: 8711
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

Both x32 and x64 TC have problems here:
x32: fast drawing w/o flickering, but problems with transparent animations,
x64: drawing with erasing and MEGA flickering, but transparent animations are drawn correctly (example)

Christian, is it hard to realize double-buffering here? I mean that:
1. You fill TBitmap in memory with lister background color,
2. You draw needed frame onto that bitmap
3. You copy entire bitmap contents to lister window
4. Repeat from step 1 with next frame after delay
You DON'T need to erase Lister window in that case (I mean that window part where you draw bitmap), just draw bitmap over! And you won't see any flickering or overlays.
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50475
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Well, I could try that, but it would require twice the memory.
Author of Total Commander
https://www.ghisler.com
User avatar
MVV
Power Member
Power Member
Posts: 8711
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

It will require only additional memory block for one frame (w*h*depth bytes), so it won't be critical on modern systems. BTW maybe some Delphi component already supports DB? (maybe some timage or something similar.) And, you may add an INI option to disable DB for users who want to see flickering. :)
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50475
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

I have added this now to beta 4, please let me know what you think!
Author of Total Commander
https://www.ghisler.com
User avatar
CJ Flash
Junior Member
Junior Member
Posts: 17
Joined: 2007-05-25, 16:55 UTC
Location: Cherepovets, Russia

Post by *CJ Flash »

2ghisler(Author)
Bug with animation of transparent GIFs is gone, thanks!
The past was yesterday...

TC 9.50ß6 64 Bit, #116718 Personal licence
User avatar
Flint
Power Member
Power Member
Posts: 3503
Joined: 2003-10-27, 09:25 UTC
Location: Belgrade, Serbia
Contact:

Post by *Flint »

Confirm the bug and fix.
Flint's Homepage: Full TC Russification Package, VirtualDisk, NTFS Links, NoClose Replacer, and other stuff!
 
Using TC 11.03 / Win10 x64
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50475
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Thanks!
Author of Total Commander
https://www.ghisler.com
User avatar
MVV
Power Member
Power Member
Posts: 8711
Joined: 2008-08-03, 12:51 UTC
Location: Russian Federation

Post by *MVV »

Christian, have you implemented double buffering? It looks perfectly. :)
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50475
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Yes I have!
Author of Total Commander
https://www.ghisler.com
Post Reply