Mercurial > sdl-ios-xcode
diff src/video/quartz/SDL_QuartzWM.m @ 4392:2b8c1aea633b SDL-1.2
Fixed bug #898
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.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Fri, 11 Dec 2009 15:31:37 +0000 |
parents | 976bc19f8f6b |
children |
line wrap: on
line diff
--- a/src/video/quartz/SDL_QuartzWM.m Fri Dec 11 15:24:53 2009 +0000 +++ b/src/video/quartz/SDL_QuartzWM.m Fri Dec 11 15:31:37 2009 +0000 @@ -151,14 +151,16 @@ /* 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 */