While I've not actually had this problem myself, I'd be interested in seeing your code (snippet) that illustrates this.
My personal approach is to do something like this:
int posx=dbMouseX(), posy=dbMouseY();
dbHideMouse();
while(LoopGDK())
{
// This code is *above* dbSync() call...
dbHideSprite(cursor);
dbPasteSprite(cursor, posx, posy);
...
dbSync();
// This code is *below* dbSync() call...
posx=dbMouseX();
posy=dbMouseY();
}
The thinking behind this is that we only poll the mouse state once each frame. Additionally, with the exception of the first poll (before the while-loop), we will poll *after* the current environment is displayed to the screen (after dbSync()) because any response that the user makes is in response to what they see on screen (which doesn't happen until a dbSync() call).
Does it really matter? Probably not. I'm not sure that anyone can respond in the brief sub-millisecond time frame between the end of dbSync() and the beginning of dbMouseX/Y() - but it helps me to keep in mind that whatever the mouse/keyboard state represents (ie: user-reactions) occurs *after* the user sees the effects of their previous actions...
Notice, however, how I Hide the sprite and then repaste it in the new position (as opposed to calling dbSprite() as the original post at the top shows. In the case of an animated cursor, I would simply call the dbSetSpriteFrame() prior to calling the dbPasteSprite()...
I hope this helps,
JTK