diff options
author | Rodger Combs <rodger.combs@gmail.com> | 2018-06-27 20:22:35 -0500 |
---|---|---|
committer | Jan Ekström <jeebjp@gmail.com> | 2018-10-02 00:20:02 +0300 |
commit | ada4f7c6006fc60189987b3ee012e7f4ced9926e (patch) | |
tree | cd6d1868544c68cdd170fd87be3a70ac6c4b15dd /osdep | |
parent | be47e22b553c6086536b7e16b9033b6f4a510600 (diff) | |
download | mpv-ada4f7c6006fc60189987b3ee012e7f4ced9926e.tar.bz2 mpv-ada4f7c6006fc60189987b3ee012e7f4ced9926e.tar.xz |
mac: fix crash if we can't get an event tap
without assistive-device permissions the event tap can't be create on
10.14 any more which lead to an assertion.
System Preferences > Security & Privacy > Privacy > Accessibility and
add mpv or your terminal App to the list.
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/macosx_events.m | 21 |
1 files changed, 12 insertions, 9 deletions
diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m index 0d46c0e906..a354378777 100644 --- a/osdep/macosx_events.m +++ b/osdep/macosx_events.m @@ -375,7 +375,8 @@ void cocoa_set_mpv_handle(struct mpv_handle *ctx) - (void)restartMediaKeys { - CGEventTapEnable(self->_mk_tap_port, true); + if (self->_mk_tap_port) + CGEventTapEnable(self->_mk_tap_port, true); } - (void)setHighestPriotityMediaKeysTap @@ -410,10 +411,10 @@ void cocoa_set_mpv_handle(struct mpv_handle *ctx) tap_event_callback, self); - assert(self->_mk_tap_port != nil); - - NSMachPort *port = (NSMachPort *)self->_mk_tap_port; - [[NSRunLoop mainRunLoop] addPort:port forMode:NSRunLoopCommonModes]; + if (self->_mk_tap_port) { + NSMachPort *port = (NSMachPort *)self->_mk_tap_port; + [[NSRunLoop mainRunLoop] addPort:port forMode:NSRunLoopCommonModes]; + } }); } @@ -421,10 +422,12 @@ void cocoa_set_mpv_handle(struct mpv_handle *ctx) { dispatch_async(dispatch_get_main_queue(), ^{ NSMachPort *port = (NSMachPort *)self->_mk_tap_port; - CGEventTapEnable(self->_mk_tap_port, false); - [[NSRunLoop mainRunLoop] removePort:port forMode:NSRunLoopCommonModes]; - CFRelease(self->_mk_tap_port); - self->_mk_tap_port = nil; + if (port) { + CGEventTapEnable(self->_mk_tap_port, false); + [[NSRunLoop mainRunLoop] removePort:port forMode:NSRunLoopCommonModes]; + CFRelease(self->_mk_tap_port); + self->_mk_tap_port = nil; + } }); } |