diff options
author | der richter <der.richter@gmx.de> | 2020-06-27 11:12:46 +0200 |
---|---|---|
committer | der richter <der.richter@gmx.de> | 2020-08-22 14:22:49 +0200 |
commit | f79a591ae471c4da6fbb40c1da4bc4220f90aba4 (patch) | |
tree | dd1825ff6fe72a3fa33d335eff047f5de7f4f683 /osdep/macos | |
parent | b16a6cb6c62657d3efbe69bd854287da149b59a1 (diff) | |
download | mpv-f79a591ae471c4da6fbb40c1da4bc4220f90aba4.tar.bz2 mpv-f79a591ae471c4da6fbb40c1da4bc4220f90aba4.tar.xz |
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.
Diffstat (limited to 'osdep/macos')
-rw-r--r-- | osdep/macos/libmpv_helper.swift | 20 | ||||
-rw-r--r-- | osdep/macos/log_helper.swift | 1 | ||||
-rw-r--r-- | osdep/macos/mpv_helper.swift | 12 | ||||
-rw-r--r-- | osdep/macos/remote_command_center.swift | 1 |
4 files changed, 14 insertions, 20 deletions
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<MPContext>(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<vo> var optsCachePtr: UnsafeMutablePointer<m_config_cache> var optsPtr: UnsafeMutablePointer<mp_vo_opts> @@ -33,22 +33,20 @@ class MPVHelper: LogHelper { var input: OpaquePointer { get { return vout.input_ctx } } var macOpts: macos_opts = macos_opts() - init(_ vo: UnsafeMutablePointer<vo>, _ name: String) { + init(_ vo: UnsafeMutablePointer<vo>, _ 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<mp_vo_opts>(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 |