From 2dd904289dcaf7b11b30ec362288f9af90531879 Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 26 May 2015 22:39:04 +0200 Subject: osx: never expose input_ctx from EventsResponder Keep it internal, so we can synchronize access to it properly. --- osdep/macosx_events.m | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) (limited to 'osdep/macosx_events.m') diff --git a/osdep/macosx_events.m b/osdep/macosx_events.m index 23a3e02355..6ae5e6d900 100644 --- a/osdep/macosx_events.m +++ b/osdep/macosx_events.m @@ -188,9 +188,7 @@ void cocoa_uninit_media_keys(void) { void cocoa_put_key(int keycode) { - struct input_ctx *inputContext = [EventsResponder sharedInstance].inputContext; - if (inputContext) - mp_input_put_key(inputContext, keycode); + [[EventsResponder sharedInstance] putKey:keycode]; } void cocoa_put_key_event(void *event) @@ -206,7 +204,7 @@ void cocoa_put_key_with_modifiers(int keycode, int modifiers) void cocoa_set_input_context(struct input_ctx *input_context) { - [EventsResponder sharedInstance].inputContext = input_context; + [[EventsResponder sharedInstance] setInputContext:input_context]; } @implementation EventsResponder @@ -233,7 +231,7 @@ void cocoa_set_input_context(struct input_ctx *input_context) - (void)waitForInputContext { [_input_ready lock]; - while (!self.inputContext) + while (!_inputContext) [_input_ready wait]; [_input_ready unlock]; } @@ -246,15 +244,31 @@ void cocoa_set_input_context(struct input_ctx *input_context) [_input_ready unlock]; } -- (struct input_ctx *)inputContext +- (void)wakeup { - return _inputContext; + mp_input_wakeup(_inputContext); +} + +- (bool)queueCommand:(char *)cmd +{ + if (!_inputContext) + return false; + + mp_cmd_t *cmdt = mp_input_parse_cmd(_inputContext, bstr0(cmd), ""); + mp_input_queue_cmd(_inputContext, cmdt); + return true; +} + +- (void)putKey:(int)keycode +{ + if (_inputContext) + mp_input_put_key(_inputContext, keycode); } - (BOOL)useAltGr { - if (self.inputContext) - return mp_input_use_alt_gr(self.inputContext); + if (_inputContext) + return mp_input_use_alt_gr(_inputContext); else return YES; } -- cgit v1.2.3