VOGONS


First post, by MrKoala

User metadata
Rank Newbie
Rank
Newbie

Hey guys!

Im wondering if anyone here could tell me something about the cursor in dgVoodo.

Im working on a game which uses DirectX 8.1, its an older MMORPG and im using the original source code.

There is a strange issue with the cursor which is causing massive lags and makes the game unplayable, but its not happening on every system, so far i could check it's
happening mostly on laptop devices. (Touchpad driver?)

The issue is that the cursor is flickering and always switches between the windows arrow and the ingame cursor, moving the mouse is causing extreme lags. (It kind of seems like the game doesnt get the full focus)

I changed the ingame cursor and the lags disappeared, but not every cursor i tried worked..

After that i deceided to try dgVoodo and it worked out!

Now im not sure how i can fix this issue, since it can't be the cursor files, because with dgVoodo it works..

Im really confused and i spent a lot of time trying to fix this issue but it seems like i can't..

Thats why im asking here, maybe someone knows how dgVoodo handles those cursors and maybe i can adapt to that.

In my game its just the call SetCursor()..

Reply 1 of 3, by Dege

User metadata
Rank l33t
Rank
l33t

You probably call SetCursor with a cursor image from somewhere and your wnd proc or DefWindowProc itself in response to WM_SETCURSOR with the cursor image registered for the wnd class on the other hand, and the two is in constant fight when the cursor is moving.
But the best is to place a breakpoint on user32.dll!SetCursor and see where it's being called from when the cursor is above your window.

Reply 2 of 3, by MrKoala

User metadata
Rank Newbie
Rank
Newbie

Thank you for the hint, i will try that out these days and tell you about the output.

But im wondering why is it working with dgVoodo, do you have a clue?

Im not that experienced with DirectX tbh i don't have any knowledge about it and now i started to port the game from DirectX 8 to DirectX9 and im hoping it will resolve the issue.

Reply 3 of 3, by Dege

User metadata
Rank l33t
Rank
l33t

It's not about DirectX, unless the game calls the D3D8 device SetCursorPosition and SetCursorProperties methods.
Unless you enabled GDI hooking in dgv config, dgVoodoo should suffer from the same lagging and double cursors for some(?) games.
Changing cursor bitmaps by Win32 SetCursor function can be time consuming for some reason. So, if concurrent calls happen all the time (as I wrote) with different cursor bitmaps then the lagging takes place.
(Somebody from MS could look into this issue).