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 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) (limited to 'osdep/macos/libmpv_helper.swift') 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 -- cgit v1.2.3