[Bug 31702] Mouselook (raw input) is bound to a box every other click in Guild Wars 2

wine-bugs at winehq.org wine-bugs at winehq.org
Mon Sep 24 07:21:02 CDT 2012


http://bugs.winehq.org/show_bug.cgi?id=31702

--- Comment #32 from voidcastr <cephryx at gmx.net> 2012-09-24 07:21:02 CDT ---
This is really getting nasty...


Investigating X11DRV_ClipCursor led to the following results:


When pressing a mouse button (activating raw input), the method seems to get
triggered twice:
1. it calls ungrab_clipping_window() and returns because
      GetWindowThreadProcessId( GetDesktopWindow(), NULL ) ==
GetCurrentThreadId()
2. it returns because
      EqualRect( clip, &clip_rect ) || clip_fullscreen_window( foreground, TRUE
)
   ...so data->clip_hwnd is non-NULL then.


When moving the mouse with the button pressed, X11DRV_ClipCursor is not called.


When releasing the mouse button (disabling raw input), to following happens in
the given order:
1. X11DRV_ClipCursor returns because
      EqualRect( clip, &clip_rect ) || clip_fullscreen_window( foreground, TRUE
)
   ...so data->clip_hwnd is still non-NULL.
2. it calls ungrab_clipping_window() and then returns because
      !clip
3. it returns because
      GetWindowThreadProcessId( GetDesktopWindow(), NULL ) ==
GetCurrentThreadId()
4. the method runs to its end and triggers ungrab_clipping_window() because
      !data->clip_hwnd


When then moving the mouse without a button pressed, the following two cases
constantly take turns (this matches the steps #3 and #4 from above):
1. the method returns because
      GetWindowThreadProcessId( GetDesktopWindow(), NULL ) ==
GetCurrentThreadId()
2. the method runs to its end and triggers ungrab_clipping_window() because
      !data->clip_hwnd


Thus, your assumption
> It would get set to NULL by ungrab_clipping_window()
seems to be correct.

Furthermore, I added traces to the end of all returns in grab_clipping_window,
like
    if(!data->clip_hwnd) TRACE("bad clip_hwnd\n");
but they never occur.

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list