Skip to content

Commit

Permalink
Fixed bug #898
Browse files Browse the repository at this point in the history
 Jeremiah Morris      2009-12-09 16:07:17 PST

No-op GlobalToLocal translations in fullscreen mode

On my MacBook Pro running 10.6, I noticed a small upward bias on mouse movement
in a fullscreen SDL application. The app uses WarpCursor and GetMouseState in a
loop to measure relative movement. I tracked it down to NSWindow's
convertBaseToScreen: routine, which added a 2-pixel offset on the Y coordinate
instead of the expected (+0,+0) translation.

In fullscreen mode, QZ_PrivateWarpCursor() does not translate the desired
position through QZ_PrivateGlobalToLocal() before passing it to the Core
Graphics system. However, QZ_GetMouseLocation() does call the reverse
QZ_PrivateLocalToGlobal() even in fullscreen mode. This asymmetry caused
problems each time the mouse was moved.
  • Loading branch information
slouken committed Dec 11, 2009
1 parent eb91e2d commit ded95e5
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/video/quartz/SDL_QuartzWM.m
Expand Up @@ -151,14 +151,16 @@ int QZ_ShowWMCursor (_THIS, WMcursor *cursor) {
/* Convert Cocoa screen coordinate to Cocoa window coordinate */
void QZ_PrivateGlobalToLocal (_THIS, NSPoint *p) {

*p = [ qz_window convertScreenToBase:*p ];
if ( ! CGDisplayIsCaptured (display_id) )
*p = [ qz_window convertScreenToBase:*p ];
}


/* Convert Cocoa window coordinate to Cocoa screen coordinate */
void QZ_PrivateLocalToGlobal (_THIS, NSPoint *p) {

*p = [ qz_window convertBaseToScreen:*p ];
if ( ! CGDisplayIsCaptured (display_id) )
*p = [ qz_window convertBaseToScreen:*p ];
}

/* Convert SDL coordinate to Cocoa coordinate */
Expand Down

0 comments on commit ded95e5

Please sign in to comment.