http://bugs.winehq.org/show_bug.cgi?id=23554
Summary: Error in GDI affects IrfanView 4.27 Product: Wine Version: 1.2-rc6 Platform: x86 URL: http://en.irfanview-forum.de/vb/showthread.php?6661-V4 -27-IrfanPaint-no-longer-keeps-data(removed-when-paint -closed)&p=30835 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: gdi32 AssignedTo: wine-bugs@winehq.org ReportedBy: mrk@emarkay.com
The plugin for IrafanView, IrfanPaint, has given me trouble in keeping the changes it has made applied to the original. In 4.25 I found that if you zoomed to "Original Size" it would keep it's data (lines text, edits, etc.) when the dialog was closed, but now in 4.27 (with the latest 4.13.67 Paint) , there is nothing I can find to keep the changes. Even saving "in process" does not keep the changes made to that point!
From Developer of plugin:
"My educated guess on this fact is that Wine for DibSections uses a hybrid approach: it creates a DIB a DDB (which probably is actually an X bitmap); the work performed by the GDI methods is done on the DDB/X bitmap, which is converted to DIB whenever the software tries to write on the DIB bits (I think they use some kind of page protection method to do that). So, when IrfanPaint just uses GDI methods to perform his work, the changes are made just on the DDB and aren't mirrored on the DIB, thus causing the problem; instead, when IP also writes directly on the DIB bits, before it does so the changes done to the DDB are automatically mirrored on the DIB, so everything works fine.
If things are like that, a quick workaround can be created to just make a "fake write" on the DIB to force the update after each tool use. It would be quite a small change and it should solve the problem.
Still, IMHO, to make such DIB/DDB system to work successfully they should have set the update also on DIB read, maybe creating a "dirty flag" to avoid unnecessary updates. "