mac: remove runtime checks and compatibility for macOS older than 10.15

we stopped supporting macOS older than 10.15 and hence can remove all
the unnecessary runtime checks and compatibility layers.
This commit is contained in:
der richter 2023-11-09 18:57:41 +01:00 committed by Dudemanguy
parent a5bf211e12
commit 23de1deaaa
17 changed files with 47 additions and 214 deletions

View File

@ -17,7 +17,6 @@
import MediaPlayer
@available(macOS 10.12.2, *)
class RemoteCommandCenter: NSObject {
enum KeyType {
case normal
@ -105,9 +104,7 @@ class RemoteCommandCenter: NSObject {
}
}
if let app = NSApp as? Application, let icon = app.getMPVIcon(),
#available(macOS 10.13.2, *)
{
if let app = NSApp as? Application, let icon = app.getMPVIcon() {
let albumArt = MPMediaItemArtwork(boundsSize: icon.size) { _ in
return icon
}

View File

@ -15,23 +15,6 @@
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
extension NSPasteboard.PasteboardType {
static let fileURLCompat: NSPasteboard.PasteboardType = {
if #available(OSX 10.13, *) {
return .fileURL
} else {
return NSPasteboard.PasteboardType(kUTTypeURL as String)
}
} ()
static let URLCompat: NSPasteboard.PasteboardType = {
if #available(OSX 10.13, *) {
return .URL
} else {
return NSPasteboard.PasteboardType(kUTTypeFileURL as String)
}
} ()
}
#if !swift(>=5.0)
extension Data {

View File

@ -26,7 +26,6 @@
#include "options/options.h"
#import "osdep/macosx_application_objc.h"
#include "osdep/macosx_compat.h"
#import "osdep/macosx_events_objc.h"
#include "osdep/threads.h"
#include "osdep/main-fn.h"
@ -177,8 +176,7 @@ static const char macosx_icon[] =
- (void)processEvent:(struct mpv_event *)event
{
#if HAVE_MACOS_TOUCHBAR
if ([self respondsToSelector:@selector(touchBar)])
[(TouchBar *)self.touchBar processEvent:event];
[(TouchBar *)self.touchBar processEvent:event];
#endif
if (_cocoa_cb) {
[_cocoa_cb processEvent:event];

View File

@ -1,63 +0,0 @@
/*
* Application Event Handling
*
* 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/>.
*/
#ifndef MPV_MACOSX_COMPAT
#define MPV_MACOSX_COMPAT
#import <Cocoa/Cocoa.h>
#include "osdep/macosx_versions.h"
#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12)
@interface NSWindow (macOS10_12_SDK)
+ (void)setAllowsAutomaticWindowTabbing:(BOOL)allow;
@end
typedef NSUInteger NSWindowStyleMask;
static const NSWindowStyleMask NSWindowStyleMaskClosable = NSClosableWindowMask;
static const NSWindowStyleMask NSWindowStyleMaskTitled = NSTitledWindowMask;
static const NSWindowStyleMask NSWindowStyleMaskMiniaturizable = NSMiniaturizableWindowMask;
static const NSWindowStyleMask NSWindowStyleMaskResizable = NSResizableWindowMask;
static const NSWindowStyleMask NSWindowStyleMaskBorderless = NSBorderlessWindowMask;
static const NSWindowStyleMask NSWindowStyleMaskFullScreen = NSFullScreenWindowMask;
static const NSEventType NSEventTypeSystemDefined = NSSystemDefined;
static const NSEventType NSEventTypeKeyDown = NSKeyDown;
static const NSEventType NSEventTypeKeyUp = NSKeyUp;
static const NSEventMask NSEventMaskLeftMouseUp = NSLeftMouseUpMask;
#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_10)
typedef NSUInteger NSEventModifierFlags;
#endif
static const NSEventModifierFlags NSEventModifierFlagShift = NSShiftKeyMask;
static const NSEventModifierFlags NSEventModifierFlagControl = NSControlKeyMask;
static const NSEventModifierFlags NSEventModifierFlagCommand = NSCommandKeyMask;
static const NSEventModifierFlags NSEventModifierFlagOption = NSAlternateKeyMask;
#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_9)
typedef NSUInteger NSModalResponse;
static const NSModalResponse NSModalResponseOK = NSFileHandlingPanelOKButton;
#endif
#endif
#endif /* MPV_MACOSX_COMPAT */

View File

@ -33,7 +33,6 @@
// doesn't make much sense, but needed to access keymap functionality
#include "video/out/vo.h"
#include "osdep/macosx_compat.h"
#import "osdep/macosx_events_objc.h"
#import "osdep/macosx_application_objc.h"
@ -299,8 +298,7 @@ void cocoa_set_mpv_handle(struct mpv_handle *ctx)
- (void)startMediaKeys
{
#if HAVE_MACOS_MEDIA_PLAYER
// 10.12.2 runtime availability check
if (_remoteCommandCenter == nil && [NSApp respondsToSelector:@selector(touchBar)]) {
if (_remoteCommandCenter == nil) {
_remoteCommandCenter = [[RemoteCommandCenter alloc] init];
}
#endif

View File

@ -20,7 +20,6 @@
#import "macosx_menubar_objc.h"
#import "osdep/macosx_application_objc.h"
#include "osdep/macosx_compat.h"
@implementation MenuBar
{
@ -34,9 +33,7 @@
[userDefaults setBool:NO forKey:@"NSFullScreenMenuItemEverywhere"];
[userDefaults setBool:YES forKey:@"NSDisabledDictationMenuItem"];
[userDefaults setBool:YES forKey:@"NSDisabledCharacterPaletteMenuItem"];
if ([NSWindow respondsToSelector:@selector(setAllowsAutomaticWindowTabbing:)])
[NSWindow setAllowsAutomaticWindowTabbing: NO];
[NSWindow setAllowsAutomaticWindowTabbing: NO];
menuTree = @[
@{
@ -640,8 +637,7 @@
#if HAVE_MACOS_TOUCHBAR
if ([action isEqual:@"toggleTouchBarCustomizationPalette:"]) {
if (![NSApp respondsToSelector:@selector(touchBar)])
continue;
continue;
}
#endif

View File

@ -1,33 +0,0 @@
/*
* 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/>.
*/
#ifndef MPV_MACOSX_VERSIONS
#define MPV_MACOSX_VERSIONS
#if !defined(MAC_OS_X_VERSION_10_9)
# define MAC_OS_X_VERSION_10_9 1090
#endif
#if !defined(MAC_OS_X_VERSION_10_10)
# define MAC_OS_X_VERSION_10_10 101000
#endif
#if !defined(MAC_OS_X_VERSION_10_12)
# define MAC_OS_X_VERSION_10_12 101200
#endif
#endif /* MPV_MACOSX_VERSIONS */

View File

@ -18,7 +18,6 @@
#include "input/input.h"
#include "input/keycodes.h"
#include "osdep/macosx_compat.h"
#include "video/out/cocoa_common.h"
#include "events_view.h"

View File

@ -15,7 +15,6 @@
* License along with mpv. If not, see <http://www.gnu.org/licenses/>.
*/
#include "osdep/macosx_compat.h"
#include "video/out/cocoa_common.h"
#include "video_view.h"

View File

@ -20,7 +20,6 @@
#include "input/keycodes.h"
#include "osdep/macosx_events.h"
#include "osdep/macosx_compat.h"
#include "video/out/cocoa_common.h"
#include "window.h"

View File

@ -121,9 +121,7 @@ class CocoaCB: Common {
}
libmpv.setRenderICCProfile(colorSpace)
if #available(macOS 10.11, *) {
layer?.colorspace = colorSpace.cgColorSpace
}
layer?.colorspace = colorSpace.cgColorSpace
}
override func windowDidEndAnimation() {

View File

@ -32,7 +32,6 @@
#import "video/out/cocoa/mpvadapter.h"
#include "osdep/threads.h"
#include "osdep/macosx_compat.h"
#include "osdep/macosx_events_objc.h"
#include "osdep/timer.h"

View File

@ -164,17 +164,6 @@ class Common: NSObject {
view?.removeFromSuperview()
}
let linkCallback: CVDisplayLinkOutputCallback = {
(displayLink: CVDisplayLink,
inNow: UnsafePointer<CVTimeStamp>,
inOutputTime: UnsafePointer<CVTimeStamp>,
flagsIn: CVOptionFlags,
flagsOut: UnsafeMutablePointer<CVOptionFlags>,
displayLinkContext: UnsafeMutableRawPointer?) -> CVReturn in
let com = unsafeBitCast(displayLinkContext, to: Common.self)
return com.displayLinkCallback(displayLink, inNow, inOutputTime, flagsIn, flagsOut)
}
func displayLinkCallback(_ displayLink: CVDisplayLink,
_ inNow: UnsafePointer<CVTimeStamp>,
_ inOutputTime: UnsafePointer<CVTimeStamp>,
@ -195,12 +184,8 @@ class Common: NSObject {
}
CVDisplayLinkSetCurrentCGDisplay(link, screen.displayID)
if #available(macOS 10.12, *) {
CVDisplayLinkSetOutputHandler(link) { link, now, out, inFlags, outFlags -> CVReturn in
return self.displayLinkCallback(link, now, out, inFlags, outFlags)
}
} else {
CVDisplayLinkSetOutputCallback(link, linkCallback, MPVHelper.bridge(obj: self))
CVDisplayLinkSetOutputHandler(link) { link, now, out, inFlags, outFlags -> CVReturn in
return self.displayLinkCallback(link, now, out, inFlags, outFlags)
}
CVDisplayLinkStart(link)
}

View File

@ -109,7 +109,7 @@ class GLLayer: CAOpenGLLayer {
autoresizingMask = [.layerWidthSizable, .layerHeightSizable]
backgroundColor = NSColor.black.cgColor
if #available(macOS 10.12, *), bufferDepth > 8 {
if bufferDepth > 8 {
contentsFormat = .RGBA16Float
}

View File

@ -36,10 +36,8 @@ class TitleBar: NSVisualEffectView {
set {
super.material = newValue
// fix for broken deprecated materials
if material == .light || material == .dark {
state = .active
} else if #available(macOS 10.11, *),
material == .mediumLight || material == .ultraDark
if material == .light || material == .dark || material == .mediumLight ||
material == .ultraDark
{
state = .active
} else {
@ -179,30 +177,25 @@ class TitleBar: NSVisualEffectView {
switch string {
case "1", "aqua":
return NSAppearance(named: .aqua)
case "2", "darkAqua":
return NSAppearance(named: .darkAqua)
case "3", "vibrantLight":
return NSAppearance(named: .vibrantLight)
case "4", "vibrantDark":
return NSAppearance(named: .vibrantDark)
default: break
case "5", "aquaHighContrast":
return NSAppearance(named: .accessibilityHighContrastAqua)
case "6", "darkAquaHighContrast":
return NSAppearance(named: .accessibilityHighContrastDarkAqua)
case "7", "vibrantLightHighContrast":
return NSAppearance(named: .accessibilityHighContrastVibrantLight)
case "8", "vibrantDarkHighContrast":
return NSAppearance(named: .accessibilityHighContrastVibrantDark)
case "0", "auto": fallthrough
default:
return nil
}
if #available(macOS 10.14, *) {
switch string {
case "2", "darkAqua":
return NSAppearance(named: .darkAqua)
case "5", "aquaHighContrast":
return NSAppearance(named: .accessibilityHighContrastAqua)
case "6", "darkAquaHighContrast":
return NSAppearance(named: .accessibilityHighContrastDarkAqua)
case "7", "vibrantLightHighContrast":
return NSAppearance(named: .accessibilityHighContrastVibrantLight)
case "8", "vibrantDarkHighContrast":
return NSAppearance(named: .accessibilityHighContrastVibrantDark)
case "0", "auto": fallthrough
default:
return nil
}
}
let style = UserDefaults.standard.string(forKey: "AppleInterfaceStyle")
return appearanceFrom(string: style == nil ? "aqua" : "vibrantDark")
@ -210,37 +203,25 @@ class TitleBar: NSVisualEffectView {
func materialFrom(string: String) -> NSVisualEffectView.Material {
switch string {
case "1", "selection": return .selection
case "0", "titlebar": return .titlebar
case "14", "dark": return .dark
case "15", "light": return .light
default: break
}
if #available(macOS 10.11, *) {
switch string {
case "2,", "menu": return .menu
case "3", "popover": return .popover
case "4", "sidebar": return .sidebar
case "16", "mediumLight": return .mediumLight
case "17", "ultraDark": return .ultraDark
default: break
}
}
if #available(macOS 10.14, *) {
switch string {
case "5,", "headerView": return .headerView
case "6", "sheet": return .sheet
case "7", "windowBackground": return .windowBackground
case "8", "hudWindow": return .hudWindow
case "9", "fullScreen": return .fullScreenUI
case "10", "toolTip": return .toolTip
case "11", "contentBackground": return .contentBackground
case "12", "underWindowBackground": return .underWindowBackground
case "13", "underPageBackground": return .underPageBackground
default: break
}
case "0", "titlebar": return .titlebar
case "1", "selection": return .selection
case "2,", "menu": return .menu
case "3", "popover": return .popover
case "4", "sidebar": return .sidebar
case "5,", "headerView": return .headerView
case "6", "sheet": return .sheet
case "7", "windowBackground": return .windowBackground
case "8", "hudWindow": return .hudWindow
case "9", "fullScreen": return .fullScreenUI
case "10", "toolTip": return .toolTip
case "11", "contentBackground": return .contentBackground
case "12", "underWindowBackground": return .underWindowBackground
case "13", "underPageBackground": return .underPageBackground
case "14", "dark": return .dark
case "15", "light": return .light
case "16", "mediumLight": return .mediumLight
case "17", "ultraDark": return .ultraDark
default: break
}
return .titlebar

View File

@ -33,7 +33,7 @@ class View: NSView {
super.init(frame: frame)
autoresizingMask = [.width, .height]
wantsBestResolutionOpenGLSurface = true
registerForDraggedTypes([ .fileURLCompat, .URLCompat, .string ])
registerForDraggedTypes([ .fileURL, .URL, .string ])
}
required init?(coder: NSCoder) {
@ -58,7 +58,7 @@ class View: NSView {
override func draggingEntered(_ sender: NSDraggingInfo) -> NSDragOperation {
guard let types = sender.draggingPasteboard.types else { return [] }
if types.contains(.fileURLCompat) || types.contains(.URLCompat) || types.contains(.string) {
if types.contains(.fileURL) || types.contains(.URL) || types.contains(.string) {
return .copy
}
return []
@ -78,7 +78,7 @@ class View: NSView {
let pb = sender.draggingPasteboard
guard let types = pb.types else { return false }
if types.contains(.fileURLCompat) || types.contains(.URLCompat) {
if types.contains(.fileURL) || types.contains(.URL) {
if let urls = pb.readObjects(forClasses: [NSURL.self]) as? [URL] {
let files = urls.map { $0.absoluteString }
EventsResponder.sharedInstance().handleFilesArray(files)

View File

@ -150,10 +150,7 @@ class MacCommon: Common {
return
}
if #available(macOS 10.11, *) {
layer?.colorspace = colorSpace.cgColorSpace
}
layer?.colorspace = colorSpace.cgColorSpace
flagEvents(VO_EVENT_ICC_PROFILE_CHANGED)
}