From f79a591ae471c4da6fbb40c1da4bc4220f90aba4 Mon Sep 17 00:00:00 2001 From: der richter Date: Sat, 27 Jun 2020 11:12:46 +0200 Subject: cocoa-cb: generalisation of backend independent parts move all backend independent code parts in their own folder and files, to simplify adding new backends. the goal is to only extend one class and add the backend dependent parts there. usually only the (un)init, config and related parts need to be implemented per backend. furthermore all needed windowing and related events are propagated and can be overwritten. the other backend dependent part is usually the surface for rendering, for example the opengl oder metal layer. in the best case a new backend can be added with only a few hundred lines. --- osdep/macos/libmpv_helper.swift | 20 +++++++++----------- osdep/macos/log_helper.swift | 1 - osdep/macos/mpv_helper.swift | 12 +++++------- osdep/macos/remote_command_center.swift | 1 - 4 files changed, 14 insertions(+), 20 deletions(-) (limited to 'osdep') diff --git a/osdep/macos/libmpv_helper.swift b/osdep/macos/libmpv_helper.swift index 5f465370dd..61c8483022 100644 --- a/osdep/macos/libmpv_helper.swift +++ b/osdep/macos/libmpv_helper.swift @@ -21,8 +21,8 @@ import OpenGL.GL3 let glDummy: @convention(c) () -> Void = {} -class LibmpvHelper: LogHelper { - +class LibmpvHelper { + var log: LogHelper var mpvHandle: OpaquePointer? var mpvRenderContext: OpaquePointer? var macOptsPtr: UnsafeMutableRawPointer? @@ -30,17 +30,16 @@ class LibmpvHelper: LogHelper { var fbo: GLint = 1 let deinitLock = NSLock() - init(_ mpv: OpaquePointer, _ name: String) { - let newlog = mp_log_new(UnsafeMutablePointer(mpv), mp_client_get_log(mpv), name) - super.init(newlog) + init(_ mpv: OpaquePointer, _ mpLog: OpaquePointer?) { mpvHandle = mpv + log = LogHelper(mpLog) guard let app = NSApp as? Application, let ptr = mp_get_config_group(nil, mp_client_get_global(mpvHandle), app.getMacOSConf()) else { - sendError("macOS config group couldn't be retrieved'") + log.sendError("macOS config group couldn't be retrieved'") exit(1) } macOptsPtr = ptr @@ -62,7 +61,7 @@ class LibmpvHelper: LogHelper { if (mpv_render_context_create(&mpvRenderContext, mpvHandle, ¶ms) < 0) { - sendError("Render context init has failed.") + log.sendError("Render context init has failed.") exit(1) } } @@ -86,7 +85,7 @@ class LibmpvHelper: LogHelper { func setRenderUpdateCallback(_ callback: @escaping mpv_render_update_fn, context object: AnyObject) { if mpvRenderContext == nil { - sendWarning("Init mpv render context first.") + log.sendWarning("Init mpv render context first.") } else { mpv_render_context_set_update_callback(mpvRenderContext, callback, MPVHelper.bridge(obj: object)) } @@ -94,7 +93,7 @@ class LibmpvHelper: LogHelper { func setRenderControlCallback(_ callback: @escaping mp_render_cb_control_fn, context object: AnyObject) { if mpvRenderContext == nil { - sendWarning("Init mpv render context first.") + log.sendWarning("Init mpv render context first.") } else { mp_render_context_set_control_callback(mpvRenderContext, callback, MPVHelper.bridge(obj: object)) } @@ -153,7 +152,7 @@ class LibmpvHelper: LogHelper { func setRenderICCProfile(_ profile: NSColorSpace) { if mpvRenderContext == nil { return } guard var iccData = profile.iccProfileData else { - sendWarning("Invalid ICC profile data.") + log.sendWarning("Invalid ICC profile data.") return } iccData.withUnsafeMutableBytes { (ptr: UnsafeMutableRawBufferPointer) in @@ -235,7 +234,6 @@ class LibmpvHelper: LogHelper { ta_free(macOptsPtr) macOptsPtr = nil mpvHandle = nil - log = nil } // *(char **) MPV_FORMAT_STRING on mpv_event_property diff --git a/osdep/macos/log_helper.swift b/osdep/macos/log_helper.swift index 6d834c0631..94640756bd 100644 --- a/osdep/macos/log_helper.swift +++ b/osdep/macos/log_helper.swift @@ -18,7 +18,6 @@ import Cocoa class LogHelper: NSObject { - var log: OpaquePointer? init(_ log: OpaquePointer?) { diff --git a/osdep/macos/mpv_helper.swift b/osdep/macos/mpv_helper.swift index d01694d736..8a05f26cb1 100644 --- a/osdep/macos/mpv_helper.swift +++ b/osdep/macos/mpv_helper.swift @@ -17,8 +17,8 @@ import Cocoa -class MPVHelper: LogHelper { - +class MPVHelper { + var log: LogHelper var vo: UnsafeMutablePointer var optsCachePtr: UnsafeMutablePointer var optsPtr: UnsafeMutablePointer @@ -33,22 +33,20 @@ class MPVHelper: LogHelper { var input: OpaquePointer { get { return vout.input_ctx } } var macOpts: macos_opts = macos_opts() - init(_ vo: UnsafeMutablePointer, _ name: String) { + init(_ vo: UnsafeMutablePointer, _ log: LogHelper) { self.vo = vo + self.log = log guard let app = NSApp as? Application, let cache = m_config_cache_alloc(vo, vo.pointee.global, app.getVoSubConf()) else { - print("NSApp couldn't be retrieved") + log.sendError("NSApp couldn't be retrieved") exit(1) } - let newlog = mp_log_new(vo, vo.pointee.log, name) optsCachePtr = cache optsPtr = UnsafeMutablePointer(OpaquePointer(cache.pointee.opts)) - super.init(newlog) - guard let ptr = mp_get_config_group(vo, vo.pointee.global, app.getMacOSConf()) else diff --git a/osdep/macos/remote_command_center.swift b/osdep/macos/remote_command_center.swift index a5dd662737..d97cb3328c 100644 --- a/osdep/macos/remote_command_center.swift +++ b/osdep/macos/remote_command_center.swift @@ -19,7 +19,6 @@ import MediaPlayer @available(macOS 10.12.2, *) class RemoteCommandCenter: NSObject { - enum KeyType { case normal case repeatable -- cgit v1.2.3