From ba75f0d7ed5e050d7f4e74f03081a3f15bc1a95a Mon Sep 17 00:00:00 2001 From: Nicolas Fella Date: Thu, 4 Aug 2022 13:14:06 +0200 Subject: [PATCH] Port framebuffers away from deprecated QDesktopWidget Use QPlatformNativeInterface to get the WId instead --- framebuffers/xcb/CMakeLists.txt | 1 + framebuffers/xcb/xcb_framebuffer.cpp | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/framebuffers/xcb/CMakeLists.txt b/framebuffers/xcb/CMakeLists.txt index e29a148..4e297ac 100644 --- a/framebuffers/xcb/CMakeLists.txt +++ b/framebuffers/xcb/CMakeLists.txt @@ -20,6 +20,7 @@ add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS}) target_link_libraries (krfb_framebuffer_xcb Qt5::Core Qt5::Gui + Qt::GuiPrivate XCB::XCB XCB::RENDER XCB::SHAPE diff --git a/framebuffers/xcb/xcb_framebuffer.cpp b/framebuffers/xcb/xcb_framebuffer.cpp index 1f793a3..fb7a61c 100644 --- a/framebuffers/xcb/xcb_framebuffer.cpp +++ b/framebuffers/xcb/xcb_framebuffer.cpp @@ -20,10 +20,10 @@ #include #include -#include #include #include #include +#include class KrfbXCBEventFilter: public QAbstractNativeEventFilter @@ -159,12 +159,13 @@ XCBFrameBuffer::XCBFrameBuffer(QObject *parent): d->area.setRect(0, 0, 0, 0); d->x11EvtFilter = new KrfbXCBEventFilter(this); d->rootScreen = get_xcb_screen(QX11Info::connection(), QX11Info::appScreen()); - d->win = QApplication::desktop()->winId(); this->fb = nullptr; QScreen *primaryScreen = QGuiApplication::primaryScreen(); if (primaryScreen) { + QPlatformNativeInterface* native = qApp->platformNativeInterface(); + d->win = reinterpret_cast(native->nativeResourceForScreen(QByteArrayLiteral("rootwindow"), primaryScreen)); qreal scaleFactor = primaryScreen->devicePixelRatio(); d->area = { primaryScreen->geometry().topLeft() * scaleFactor, primaryScreen->geometry().bottomRight() * scaleFactor };