From 6ee4b2de1a5c9c77593a4d3cd23b46a4a1982c22 Mon Sep 17 00:00:00 2001 From: Anderson Torres Date: Sat, 8 Jun 2024 13:32:43 -0300 Subject: mpv: fix build on Darwin (patch by marsam) --- .../video/mpv/0001-fix-darwin-build.patch | 29 ++++++++++++++++++++++ pkgs/applications/video/mpv/default.nix | 8 ++++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 pkgs/applications/video/mpv/0001-fix-darwin-build.patch (limited to 'pkgs/applications/video/mpv') diff --git a/pkgs/applications/video/mpv/0001-fix-darwin-build.patch b/pkgs/applications/video/mpv/0001-fix-darwin-build.patch new file mode 100644 index 0000000000000..c7e486a3c5d14 --- /dev/null +++ b/pkgs/applications/video/mpv/0001-fix-darwin-build.patch @@ -0,0 +1,29 @@ +--- a/osdep/mac/input_helper.swift ++++ b/osdep/mac/input_helper.swift +@@ -18,6 +18,14 @@ + import Cocoa + import Carbon.HIToolbox + ++extension NSCondition { ++ fileprivate func withLock(_ body: () throws -> T) rethrows -> T { ++ self.lock() ++ defer { self.unlock() } ++ return try body() ++ } ++} ++ + class InputHelper: NSObject { + var option: OptionHelper? + var lock = NSCondition() +--- a/audio/out/ao_avfoundation.m ++++ b/audio/out/ao_avfoundation.m +@@ -312,7 +312,8 @@ + ++ #if __MAC_OS_X_VERSION_MAX_ALLOWED >= 120000 + p->observer = [[AVObserver alloc] initWithAO:ao]; + NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; + [center addObserver:p->observer selector:@selector(handleRestartNotification:) name:AVSampleBufferAudioRendererOutputConfigurationDidChangeNotification object:p->renderer]; + [center addObserver:p->observer selector:@selector(handleRestartNotification:) name:AVSampleBufferAudioRendererWasFlushedAutomaticallyNotification object:p->renderer]; +- ++ #endif + return CONTROL_OK; diff --git a/pkgs/applications/video/mpv/default.nix b/pkgs/applications/video/mpv/default.nix index a1132b594c38b..b5672d7afa46d 100644 --- a/pkgs/applications/video/mpv/default.nix +++ b/pkgs/applications/video/mpv/default.nix @@ -88,7 +88,7 @@ pulseSupport ? config.pulseaudio or stdenv.isLinux, rubberbandSupport ? true, screenSaverSupport ? true, - sdl2Support ? true, + sdl2Support ? !stdenv.isDarwin, sixelSupport ? false, speexSupport ? true, swiftSupport ? stdenv.isDarwin, @@ -152,6 +152,11 @@ stdenv'.mkDerivation (finalAttrs: { hash = "sha256-dFajnCpGlNqUv33A8eFEn8kjtzIPkcBY5j0gNVlaiIY="; }; + patches = [ + # Fix build with Darwin SDK 11 + ./0001-fix-darwin-build.patch + ]; + postPatch = lib.concatStringsSep "\n" [ # Don't reference compile time dependencies or create a build outputs cycle # between out and dev @@ -355,7 +360,6 @@ stdenv'.mkDerivation (finalAttrs: { mpv is a free and open-source general-purpose video player, based on the MPlayer and mplayer2 projects, with great improvements above both. ''; - broken = stdenv.isDarwin; # Yet another SDK incompatibility... changelog = "https://github.com/mpv-player/mpv/releases/tag/v${finalAttrs.version}"; license = lib.licenses.gpl2Plus; mainProgram = "mpv"; -- cgit 1.4.1