From fe66290c50d8039d0c91c088fc4df12be3855289 Mon Sep 17 00:00:00 2001 From: ardnew Date: Sat, 24 May 2025 13:37:45 -0500 Subject: [PATCH] fix(mpvwidget): store fwd decl display as ptr directly in params --- src/mpv/mpvwidget.cpp | 52 +++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/lib/media/src/mpv/mpvwidget.cpp b/lib/media/src/mpv/mpvwidget.cpp index d096f92..49b98b9 100644 --- a/lib/media/src/mpv/mpvwidget.cpp +++ b/lib/media/src/mpv/mpvwidget.cpp @@ -41,39 +41,39 @@ void MpvWidget::initializeGL() { #else mpv_opengl_init_params gl_init_params{get_proc_address, this}; #endif - mpv_render_param params[]{{MPV_RENDER_PARAM_API_TYPE, (void *)MPV_RENDER_API_TYPE_OPENGL}, - {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params}, - {MPV_RENDER_PARAM_INVALID, nullptr}, - {MPV_RENDER_PARAM_INVALID, nullptr}}; + + mpv_render_param render_display{MPV_RENDER_PARAM_INVALID, nullptr}; #if defined(Q_OS_UNIX) && !defined(Q_OS_DARWIN) - bool isPlatformX11 = false; - bool isPlatformWayland = false; + #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) - Display *display = QX11Info::display(); - isPlatformX11 = QX11Info::isPlatformX11(); + + render_display.type = MPV_RENDER_PARAM_X11_DISPLAY; + render_display.data = (void *)QX11Info::display(); + #else - Display *display = nullptr; - if (auto *ni = qGuiApp->nativeInterface()) { - display = ni->display(); - isPlatformX11 = true; - } - #if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) - else if (auto *ni = qGuiApp->nativeInterface()) { - display = ni->display(); - isPlatformWayland = true; - } - #endif - #endif - if (isPlatformX11) { - params[2].type = MPV_RENDER_PARAM_X11_DISPLAY; - params[2].data = (void *)display; - } else if (isPlatformWayland) { - params[2].type = MPV_RENDER_PARAM_WL_DISPLAY; - params[2].data = (void *)display; + + if (auto *ni = qGuiApp->nativeInterface()) { + render_display.type = MPV_RENDER_PARAM_X11_DISPLAY; + render_display.data = (void *)ni->display(); } + + #if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) + + else if (auto *ni = qGuiApp->nativeInterface()) { + render_display.type = MPV_RENDER_PARAM_WL_DISPLAY; + render_display.data = (void *)ni->display(); + } + + #endif + #endif #endif + mpv_render_param params[]{{MPV_RENDER_PARAM_API_TYPE, (void *)MPV_RENDER_API_TYPE_OPENGL}, + {MPV_RENDER_PARAM_OPENGL_INIT_PARAMS, &gl_init_params}, + render_display, + {MPV_RENDER_PARAM_INVALID, nullptr}}; + if (mpv_render_context_create(&mpvContext, mpv, params) < 0) qFatal("failed to initialize mpv GL context"); mpv_render_context_set_update_callback(mpvContext, MpvWidget::onUpdate, (void *)this);