From dba2b90d9a34055e98c9216bd305a5cb4fb01a3a Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 9 Oct 2014 21:23:54 +0200 Subject: libmpv/cocoa: don't start the event monitor The event monitor is used to get keyboard events when there is no window, but since it is a global monitor to the current process, we don't want it in a library setting. --- osdep/macosx_events.h | 2 ++ osdep/macosx_events.m | 29 +++++++++++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) (limited to 'osdep') diff --git a/osdep/macosx_events.h b/osdep/macosx_events.h index f3dfbdfea4..34d653c3de 100644 --- a/osdep/macosx_events.h +++ b/osdep/macosx_events.h @@ -26,6 +26,8 @@ struct input_ctx; void cocoa_put_key(int keycode); void cocoa_put_key_with_modifiers(int keycode, int modifiers); +void cocoa_start_event_monitor(void); + void cocoa_init_apple_remote(void); void cocoa_uninit_apple_remote(void); diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m index 97ef93f405..71a9591134 100644 --- a/osdep/macosx_events.m +++ b/osdep/macosx_events.m @@ -45,6 +45,7 @@ - (BOOL)handleMediaKey:(NSEvent *)event; - (NSEvent *)handleKey:(NSEvent *)event; +- (void)startEventMonitor; - (void)startAppleRemote; - (void)stopAppleRemote; - (void)startMediaKeys; @@ -112,6 +113,11 @@ static int convert_key(unsigned key, unsigned charcode) return charcode; } +void cocoa_start_event_monitor(void) +{ + [[EventsResponder sharedInstance] startEventMonitor]; +} + void cocoa_init_apple_remote(void) { [[EventsResponder sharedInstance] startAppleRemote]; @@ -211,16 +217,6 @@ void cocoa_set_input_context(struct input_ctx *input_context) self = [super init]; if (self) { _input_ready = [NSCondition new]; - - [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSKeyUpMask - handler:^(NSEvent *event) { - BOOL equivalent = [[NSApp mainMenu] performKeyEquivalent:event]; - if (equivalent) { - return (NSEvent *)nil; - } else { - return [self handleKey:event]; - } - }]; } return self; } @@ -254,6 +250,19 @@ void cocoa_set_input_context(struct input_ctx *input_context) return YES; } +- (void)startEventMonitor +{ + [NSEvent addLocalMonitorForEventsMatchingMask:NSKeyDownMask|NSKeyUpMask + handler:^(NSEvent *event) { + BOOL equivalent = [[NSApp mainMenu] performKeyEquivalent:event]; + if (equivalent) { + return (NSEvent *)nil; + } else { + return [self handleKey:event]; + } + }]; +} + - (void)startAppleRemote { dispatch_async(dispatch_get_main_queue(), ^{ -- cgit v1.2.3