From 0e441525cfc2c0d56b6d4a5fc67016d7e29d1b2c Mon Sep 17 00:00:00 2001 From: der richter Date: Sun, 18 Feb 2024 17:43:30 +0100 Subject: [PATCH] vo: make libmpv last in the auto-probing order for cocoa-cb only this partially reverts commit 7b5a258. back then the only properly working vo on macOS was cocoa-cb (libmpv). it would always use the deprecated opengl cocoa backend or no vo at all. because of that libmpv was moved to the top of the auto-probing order, so the preferred vo was used on macOS only. we now have a working vulkan gpu/gpu-next backend on macOS which should be the new default vo. though disabling the auto-probing again for libmpv would probably cause the undesired behaviour on macOS that cocoa-cb would never be auto selected again. especially if not build with vulkan support or without vulkan driver on macOS, this would lead to no video output at all. so instead of completely reverting the mentioned commit, we instead move libmpv to the bottom of the auto-probing order but only auto select it when mpv was built with cocoa-cb support. this restores the previous behaviour on all other platforms besides macOS, but also lets us auto select cocoa-cb if supported. --- DOCS/client-api-changes.rst | 6 +++++- libmpv/client.h | 2 +- video/out/vo.c | 2 +- video/out/vo_libmpv.c | 5 +++++ 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/DOCS/client-api-changes.rst b/DOCS/client-api-changes.rst index f0926471f3..1d121eb2a8 100644 --- a/DOCS/client-api-changes.rst +++ b/DOCS/client-api-changes.rst @@ -31,7 +31,11 @@ API changes =========== :: - + --- mpv 0.38.0 --- + 2.3 - partially revert the changes from API version 1.27, remove libmpv as the default VO and + move it to the bottom of the auto-probing order. this restores the behaviour prior API + version 1.27 on all platforms other than macOS, but still auto selects libmpv/cocoa-cb + on macOS if it was built with support for cocoa-cb. --- mpv 0.37.0 --- 2.2 - add mpv_time_ns() --- mpv 0.36.0 --- diff --git a/libmpv/client.h b/libmpv/client.h index 0a548a58eb..56235e1120 100644 --- a/libmpv/client.h +++ b/libmpv/client.h @@ -248,7 +248,7 @@ extern "C" { * relational operators (<, >, <=, >=). */ #define MPV_MAKE_VERSION(major, minor) (((major) << 16) | (minor) | 0UL) -#define MPV_CLIENT_API_VERSION MPV_MAKE_VERSION(2, 2) +#define MPV_CLIENT_API_VERSION MPV_MAKE_VERSION(2, 3) /** * The API user is allowed to "#define MPV_ENABLE_DEPRECATED 0" before diff --git a/video/out/vo.c b/video/out/vo.c index 2400f8de61..08a0a9f88b 100644 --- a/video/out/vo.c +++ b/video/out/vo.c @@ -69,7 +69,6 @@ extern const struct vo_driver video_out_kitty; static const struct vo_driver *const video_out_drivers[] = { - &video_out_libmpv, #if HAVE_ANDROID &video_out_mediacodec_embed, #endif @@ -99,6 +98,7 @@ static const struct vo_driver *const video_out_drivers[] = #if HAVE_X11 &video_out_x11, #endif + &video_out_libmpv, &video_out_null, // should not be auto-selected &video_out_image, diff --git a/video/out/vo_libmpv.c b/video/out/vo_libmpv.c index 8a686022a1..942882ca9c 100644 --- a/video/out/vo_libmpv.c +++ b/video/out/vo_libmpv.c @@ -705,6 +705,11 @@ static void uninit(struct vo *vo) static int preinit(struct vo *vo) { +#if !HAVE_MACOS_COCOA_CB + if (vo->probing) + return -1; +#endif + struct vo_priv *p = vo->priv; struct mpv_render_context *ctx =