Hi all,
I think I've traced the problem with the Adobe SVG plugin not reliably rendering:
This is from a good run (when I use an svg file I know will render OK):
080746b8:Call kernel32.LOCAL_Free(0000019f,00001aca) ret=40948f6b 080746b8:Ret kernel32.LOCAL_Free() retval=00000000 ret=40948f6b trace:gdi:GDI_FreeObject (0x1aca): leave 1 080746b8:Ret gdi32.DeleteObject() retval=00000001 ret=5300a17c 080746b8:Call gdi32.BitBlt(000008a8,00000000,00000000,0000008c,0000008c,00000ba0,00000000,00000000,00cc0020) ret=5300a1ae
As you can see, it appears to perform the BitBlt call correctly, those parameters look correct.
Here is the same section from a bad run:
080746b8:Call kernel32.LOCAL_Free(0000019f,00001ac2) ret=40948f6b 080746b8:Ret kernel32.LOCAL_Free() retval=00000000 ret=40948f6b trace:gdi:GDI_FreeObject (0x1ac2): leave 1 080746b8:Ret gdi32.DeleteObject() retval=00000001 ret=5301b3df 080746b8:Call gdi32.RestoreDC(000008a8,ffffffff) ret=53018c68
It doesn't call BitBlt at all, not now, not later, not at all. Instead, it calls RestoreDC for no apparently good reason. That last argument looks highly suspicious, in that MSDN says it's an int which when positive identifies a state and when negative identifies a "step", ie -1 would restore the last state from the stack.
I can't figure out what ffffffff would be as an int though :( Would it be negative or positive? Either way, is this an intelligent sort of value for the parameter to have? The MSDN docs are here:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/devcons...
I can't figure out why it would suddenly call RestoreDC and then seemingly go off on a tangent (the traces match up until that point), rather than do a BitBlt like it's supposed to. The SVG files vary only in that the "good" one has some interactivity (but it's not triggered at startup).
Does anybody have any ideas? I'm fresh out for today. thanks -mike
On 5 Dec 2002, Mike Hearn wrote: [...]
I can't figure out what ffffffff would be as an int though :( Would it be negative or positive?
For a 32 bit signed int, 0xffffffff == -1. See: http://burks.brighton.ac.uk/burks/foldoc/42/120.htm
Thanks :) I wasn't aware of that.
I haven't been able to get any more insight from staring at traces, so I was wondering if the next step would be disassembly of the plugin so I can try and figure out what decisions it's making that would lead to it not blitting the rendered image to the screen. My questions are:
1) Is this acceptable in Wine? I'm not based in the US btw. 2) If so, are there any guides on how to do it? 3) What disassembly programs are recommended?
4) Is this even what I should be considering next, or are there perhaps other ways of figuring out what's going wrong?
thanks -mike
On Thu, 2002-12-05 at 21:21, Francois Gouget wrote:
On 5 Dec 2002, Mike Hearn wrote: [...]
I can't figure out what ffffffff would be as an int though :( Would it be negative or positive?
For a 32 bit signed int, 0xffffffff == -1. See: http://burks.brighton.ac.uk/burks/foldoc/42/120.htm