summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFRAU KOUJIRO <frau@doushio.com>2014-04-15 17:09:47 -0700
committerStefano Pigozzi <stefano.pigozzi@gmail.com>2014-08-06 09:31:58 +0200
commit78a2d99de130cc8e6adc18c5d7a987c5c8b2d2b3 (patch)
tree6a79a170ddfb76c649c45d24a743614cac1c33ba
parent78a266d599d08b2792efaeb6e9391cdff56c1281 (diff)
downloadmpv-78a2d99de130cc8e6adc18c5d7a987c5c8b2d2b3.tar.bz2
mpv-78a2d99de130cc8e6adc18c5d7a987c5c8b2d2b3.tar.xz
cocoa: sync inputContext inside EventsResponder
-rw-r--r--osdep/macosx_application.m10
-rw-r--r--osdep/macosx_events.m26
-rw-r--r--osdep/macosx_events_objc.h4
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