summaryrefslogtreecommitdiffstats
path: root/osdep/mac/events.m
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2024-03-23 20:09:15 +0100
committerder richter <der.richter@gmx.de>2024-03-24 23:03:48 +0100
commit7e07e1a087e4107914294c5e9717f798e446c5d9 (patch)
treed0342930685761b1f3bb1c471c9b0c8e21fd8a95 /osdep/mac/events.m
parentdeb9d30e905b7b4645f18a26e6274a2859221631 (diff)
downloadmpv-7e07e1a087e4107914294c5e9717f798e446c5d9.tar.bz2
mpv-7e07e1a087e4107914294c5e9717f798e446c5d9.tar.xz
mac/apphub: migrate remaining events functionality to new AppHub
add new app_bridge objc file for bridging between mpv core and app functionality. replace old EventsResponder singleton with AppHub. another step to clean up all App functionality and have one central place for it.
Diffstat (limited to 'osdep/mac/events.m')
-rw-r--r--osdep/mac/events.m185
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