Advice fixing #13683 (DirectX mouse overlay?)

Christopher Thielen christopher at thielen.co
Tue Feb 18 21:19:53 CST 2014


Good point. Maybe knowing the offset isn't too useful for now.

I still haven't figured out through what mechanism the game draws this 
missing cursor. The D3D9 cursor functions never make a sound in the logs 
and while the User32 LoadCursor/SetCursor/clipping stuff is called an 
awful lot on initialization, it looks like it's always for the system 
cursors. I also pasted in a method to dump to a .bmp file anything that 
goes through LoadIcon and wound up with one icon I don't recall and 
another which was simply Wine's icon.

So, my hunch now is that the game draws the cursor using DirectX and 
uses User32 only for setting mouse clipping.

Is there a decent way to dump as a file every DX resource loaded that's 
under a certain size? I'd like to confirm my theory and maybe if I'm 
lucky figure out which DX surface/texture is being drawn incorrectly (if 
any).

- Christopher Thielen

On 02/18/2014 12:16 AM, Stefan Dösinger wrote:
>
> Am 18.02.2014 um 06:12 schrieb Christopher Thielen <christopher at thielen.co>:
>> Two questions:
>> 1) Is there a way to add timestamps to the TRACE statements in Wine?
> WINEDEBUG=+timestamp
>
> This adds timestamps to other traces, so you can do e.g. WINEDEBUG=d3d,timestamp to get a d3d trace with timestamps.
>
>> 2) If I know which file is opened by the game, is there a way to debug from that point on, i.e. capture the fopen() and enable +cursor,+resource,+d3d TRACES for say, only 5 seconds after that point? Something along those lines?
> Afaik no. You could use some search and replace tricks in text editors or with command line text tools though.
>>
>> I can find the exact offset within the data file used to load the missing resource - but I'd need a way to know when a fread() was that far along. I figure if I can determine that I can determine if the cursor is loaded as a Windows cursor or as a D3D surface and go from there.
> Note that there are plenty of ways to open and read files. fopen and fread are just one of them. There are win32 equivalents of those C functions, and there are specific resource loading functions which you’ve probably already seen.
>



More information about the wine-devel mailing list