Something went wrong. Try again.
🎥 Command line media player
Something went wrong. Try again.
Swift
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677/* * 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 Cocoaimport os
class LogHelper { var log: OpaquePointer?#if HAVE_MACOS_11_FEATURES @available(macOS 11.0, *) var logger: Logger? { return Logger(subsystem: "io.mpv", category: "mpv") }#endif
let loggerMapping: [Int: OSLogType] = [ MSGL_V: .debug, MSGL_INFO: .info, MSGL_WARN: .error, MSGL_ERR: .fault ]
init(_ log: OpaquePointer? = nil) { self.log = log }
func verbose(_ message: String) { send(message: message, type: MSGL_V) }
func info(_ message: String) { send(message: message, type: MSGL_INFO) }
func warning(_ message: String) { send(message: message, type: MSGL_WARN) }
func error(_ message: String) { send(message: message, type: MSGL_ERR) }
func send(message: String, type: Int) { guard let log = log else {#if HAVE_MACOS_11_FEATURES if #available(macOS 11.0, *) { logger?.log(level: loggerMapping[type] ?? .default, "\(message, privacy: .public)") }#endif return }
let args: [CVarArg] = [(message as NSString).utf8String ?? "NO MESSAGE"] mp_msg_va(log, Int32(type), "%s\n", getVaList(args)) }
deinit { // only a manual dereferencing will trigger this, cleanup properly in that case ta_free(UnsafeMutablePointer(log)) log = nil }}