Anyone familiar with CGDisplayRegisterReconfigurationCallback callback and
fullscreen when connecting and disconnecting an external monitor?
I have written an application that places a custom NSView into fullscreen
(using enterfullscreenmode with options) on an external monitor while the main
window remains on the main (built-in screen). The view enters and exits as
expected but I was trying to cover all my bases and have the fullscreen exit
gracefully if the external monitor is unplugged while my application is
running. In my research I came across
CGDisplayRegisterReconfigurationCallback. I implemented the callback as
follows
void TheDisplayReconfigurationCallBack ( CGDirectDisplayID display,
CGDisplayChangeSummaryFlags flags,
void *userInfo)
{
if (flags & kCGDisplayAddFlag) {
NSLog (@"Display Added");
}
else if (kCGDisplayRemoveFlag) {
NSLog (@"Display Removed");
[[NSNotificationCenter defaultCenter]
postNotificationName:@"ScreenDisconnected" object:nil];
}
}
and called:
CGDisplayRegisterReconfigurationCallback(TheDisplayReconfigurationCallBack,
NULL);
in a method in my implementation.
When the application is not in fullscreen my application receives and the
callback function works as expected. However, when the view is in fullscreen
the callback function is not called when the monitor is unplugged. In fact the
OS does not update the screen configuration until I exit fullscreen (through a
test button I implemented on the main window).
Any help would be appreciated I think I have exhausted all my google answers
for CGDisplayRegisterReconfigurationCallback.
Thanks
Tom
The applications runs on both 10.6 and 10.7.
_______________________________________________
Cocoa-dev mailing list ([email protected])
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com
This email sent to [email protected]