From 47c032ff34a102e7bf1e909483a24c29c0399b2f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Tue, 26 Oct 2010 16:15:53 -0600 Subject: [PATCH] work around cocoa display-change issue --- collects/mred/private/wx/cocoa/queue.rkt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/collects/mred/private/wx/cocoa/queue.rkt b/collects/mred/private/wx/cocoa/queue.rkt index 9e96c79b41..462052bf7b 100644 --- a/collects/mred/private/wx/cocoa/queue.rkt +++ b/collects/mred/private/wx/cocoa/queue.rkt @@ -58,6 +58,16 @@ (tellv app setDelegate: app-delegate) (tellv app activateIgnoringOtherApps: #:type _BOOL #t) +;; For some reason, nextEventMatchingMask:... gets stuck if the +;; display changes, and it doesn't even send the +;; `applicationDidChangeScreenParameters:' callback. Unstick +;; it by posting a dummy event, since we fortunately can receive +;; a callback via CGDisplayRegisterReconfigurationCallback(). +(define-appserv CGDisplayRegisterReconfigurationCallback + (_fun (_fun #:atomic? #t -> _void) _pointer -> _int32)) +(define (on-screen-changed) (post-dummy-event)) +(CGDisplayRegisterReconfigurationCallback on-screen-changed #f) + ;; ------------------------------------------------------------ ;; Create an event to post when MzScheme has been sleeping but is ;; ready to wake up