diff options
Diffstat (limited to 'osdep/mac/events.m')
-rw-r--r-- | osdep/mac/events.m | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/osdep/mac/events.m b/osdep/mac/events.m deleted file mode 100644 index 127a674339..0000000000 --- a/osdep/mac/events.m +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Cocoa Application Event Handling - * - * This file is part of mpv. - * - * mpv is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * mpv is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with mpv. If not, see <http://www.gnu.org/licenses/>. - */ - -#import <Cocoa/Cocoa.h> - -#include "mpv_talloc.h" -#include "input/event.h" -#include "input/input.h" -#include "player/client.h" - -#import "osdep/mac/events_objc.h" -#import "osdep/mac/application_objc.h" - -#include "config.h" - -#if HAVE_SWIFT -#include "osdep/mac/swift.h" -#endif - -@interface EventsResponder () -{ - struct mpv_handle *_ctx; - BOOL _is_application; -} - -- (BOOL)setMpvHandle:(struct mpv_handle *)ctx; -- (void)initCocoaCb; -- (void)readEvents; -- (void)startMediaKeys; -- (void)stopMediaKeys; -@end - -void cocoa_init_media_keys(void) -{ - [[EventsResponder sharedInstance] startMediaKeys]; -} - -void cocoa_uninit_media_keys(void) -{ - [[EventsResponder sharedInstance] stopMediaKeys]; -} - -void cocoa_set_input_context(struct input_ctx *input_context) -{ - [[EventsResponder sharedInstance].inputHelper signalWithInput:input_context]; -} - -static void wakeup(void *context) -{ - [[EventsResponder sharedInstance] readEvents]; -} - -void cocoa_set_mpv_handle(struct mpv_handle *ctx) -{ - if ([[EventsResponder sharedInstance] setMpvHandle:ctx]) { - mpv_observe_property(ctx, 0, "duration", MPV_FORMAT_DOUBLE); - mpv_observe_property(ctx, 0, "time-pos", MPV_FORMAT_DOUBLE); - mpv_observe_property(ctx, 0, "speed", MPV_FORMAT_DOUBLE); - mpv_observe_property(ctx, 0, "pause", MPV_FORMAT_FLAG); - mpv_observe_property(ctx, 0, "media-title", MPV_FORMAT_STRING); - mpv_observe_property(ctx, 0, "chapter-metadata/title", MPV_FORMAT_STRING); - mpv_observe_property(ctx, 0, "metadata/by-key/album", MPV_FORMAT_STRING); - mpv_observe_property(ctx, 0, "metadata/by-key/artist", MPV_FORMAT_STRING); - mpv_set_wakeup_callback(ctx, wakeup, NULL); - } -} - -void cocoa_init_cocoa_cb(void) -{ - [[EventsResponder sharedInstance] initCocoaCb]; -} - -@implementation EventsResponder - -@synthesize remoteCommandCenter = _remoteCommandCenter; -@synthesize inputHelper = _inputHelper; - -+ (EventsResponder *)sharedInstance -{ - static EventsResponder *responder = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - responder = [EventsResponder new]; - responder.inputHelper = [[InputHelper alloc] init: nil :nil]; - }); - return responder; -} - -- (void)setIsApplication:(BOOL)isApplication -{ - _is_application = isApplication; -} - -- (BOOL)setMpvHandle:(struct mpv_handle *)ctx -{ - if (_is_application) { - _ctx = ctx; - return YES; - } - - mpv_destroy(ctx); - return NO; -} - -- (void)initCocoaCb -{ - if (_is_application) { - dispatch_sync(dispatch_get_main_queue(), ^{ - [NSApp initCocoaCb:_ctx]; - }); - } -} - -- (void)readEvents -{ - dispatch_async(dispatch_get_main_queue(), ^{ - while (_ctx) { - mpv_event *event = mpv_wait_event(_ctx, 0); - if (event->event_id == MPV_EVENT_NONE) - break; - [self processEvent:event]; - } - }); -} - --(void)processEvent:(struct mpv_event *)event -{ - if(_is_application) { - [NSApp processEvent:event]; - } - - if (_remoteCommandCenter) { - [_remoteCommandCenter processEvent:event]; - } - - switch (event->event_id) { - case MPV_EVENT_SHUTDOWN: { -#if HAVE_MACOS_COCOA_CB - if ([(Application *)NSApp cocoaCB].isShuttingDown) { - _ctx = nil; - return; - } -#endif - mpv_destroy(_ctx); - _ctx = nil; - break; - } - default: - break; - } -} - -- (void)startMediaKeys -{ -#if HAVE_MACOS_MEDIA_PLAYER - if (_remoteCommandCenter == nil) { - _remoteCommandCenter = [[RemoteCommandCenter alloc] init]; - } -#endif - - [_remoteCommandCenter start]; -} - -- (void)stopMediaKeys -{ - [_remoteCommandCenter stop]; -} - -@end |