diff options
author | FRAU KOUJIRO <frau@doushio.com> | 2014-04-15 17:09:47 -0700 |
---|---|---|
committer | Stefano Pigozzi <stefano.pigozzi@gmail.com> | 2014-08-06 09:31:58 +0200 |
commit | 78a2d99de130cc8e6adc18c5d7a987c5c8b2d2b3 (patch) | |
tree | 6a79a170ddfb76c649c45d24a743614cac1c33ba /osdep | |
parent | 78a266d599d08b2792efaeb6e9391cdff56c1281 (diff) | |
download | mpv-78a2d99de130cc8e6adc18c5d7a987c5c8b2d2b3.tar.bz2 mpv-78a2d99de130cc8e6adc18c5d7a987c5c8b2d2b3.tar.xz |
cocoa: sync inputContext inside EventsResponder
Diffstat (limited to 'osdep')
-rw-r--r-- | osdep/macosx_application.m | 10 | ||||
-rw-r--r-- | osdep/macosx_events.m | 26 | ||||
-rw-r--r-- | osdep/macosx_events_objc.h | 4 |
3 files changed, 28 insertions, 12 deletions
diff --git a/osdep/macosx_application.m b/osdep/macosx_application.m index f6061fe76a..9aff6e814b 100644 --- a/osdep/macosx_application.m +++ b/osdep/macosx_application.m @@ -318,10 +318,7 @@ int cocoa_main(mpv_main_fn mpv_main, int argc, char *argv[]) macosx_finder_args_preinit(&argc, &argv); pthread_create(&playback_thread_id, NULL, playback_thread, &ctx); - [_eventsResponder.input_ready lock]; - while (!_eventsResponder.inputContext) - [_eventsResponder.input_ready wait]; - [_eventsResponder.input_ready unlock]; + [[EventsResponder sharedInstance] waitForInputContext]; cocoa_run_runloop(); @@ -378,10 +375,7 @@ void cocoa_stop_runloop(void) void cocoa_set_input_context(struct input_ctx *input_context) { - [_eventsResponder.input_ready lock]; - _eventsResponder.inputContext = input_context; - [_eventsResponder.input_ready signal]; - [_eventsResponder.input_ready unlock]; + [EventsResponder sharedInstance].inputContext = input_context; } void cocoa_post_fake_event(void) diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m index 7a525f7dd5..c8da555fa1 100644 --- a/osdep/macosx_events.m +++ b/osdep/macosx_events.m @@ -36,6 +36,8 @@ @interface EventsResponder () { + struct input_ctx *_inputContext; + NSCondition *_input_ready; CFMachPortRef _mk_tap_port; HIDRemote *_remote; } @@ -188,9 +190,6 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) @implementation EventsResponder -@synthesize inputContext = _input_context; -@synthesize input_ready = _input_ready; - + (EventsResponder *)sharedInstance { static EventsResponder *responder = nil; @@ -220,6 +219,27 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) return self; } +- (void)waitForInputContext +{ + [_input_ready lock]; + while (!self.inputContext) + [_input_ready wait]; + [_input_ready unlock]; +} + +- (void)setInputContext:(struct input_ctx *)ctx; +{ + [_input_ready lock]; + _inputContext = ctx; + [_input_ready signal]; + [_input_ready unlock]; +} + +- (struct input_ctx *)inputContext +{ + return _inputContext; +} + - (BOOL)useAltGr { if (self.inputContext) diff --git a/osdep/macosx_events_objc.h b/osdep/macosx_events_objc.h index 226d8cb562..575f336f87 100644 --- a/osdep/macosx_events_objc.h +++ b/osdep/macosx_events_objc.h @@ -27,7 +27,9 @@ struct input_ctx; + (EventsResponder *)sharedInstance; +/// Blocks until inputContext is present. +- (void)waitForInputContext; + @property(nonatomic, assign) struct input_ctx *inputContext; -@property(nonatomic, retain) NSCondition *input_ready; @end |