summaryrefslogtreecommitdiffstats
path: root/osdep
diff options
context:
space:
mode:
authorder richter <der.richter@gmx.de>2020-06-27 11:12:46 +0200
committerder richter <der.richter@gmx.de>2020-08-22 14:22:49 +0200
commitf79a591ae471c4da6fbb40c1da4bc4220f90aba4 (patch)
treedd1825ff6fe72a3fa33d335eff047f5de7f4f683 /osdep
parentb16a6cb6c62657d3efbe69bd854287da149b59a1 (diff)
downloadmpv-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')
-rw-r--r--osdep/macos/libmpv_helper.swift20
-rw-r--r--osdep/macos/log_helper.swift1
-rw-r--r--osdep/macos/mpv_helper.swift12
-rw-r--r--osdep/macos/remote_command_center.swift1
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, &params) < 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