diff --git a/0001-Declare-and-use-logging-categories.patch b/0001-Declare-and-use-logging-categories.patch new file mode 100644 index 0000000..82d329a --- /dev/null +++ b/0001-Declare-and-use-logging-categories.patch @@ -0,0 +1,488 @@ +From 7299923943687a9e9e411c6b0a8d74e04d5a9b04 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Tue, 11 Aug 2020 19:50:46 +0200 +Subject: [PATCH 1/3] Declare and use logging categories + +Adds the following logging categories: +- kf.rfb +- kf.rfb.framebuffer.qt +- kf.rfb.framebuffer.xcb +--- + CMakeLists.txt | 7 +++++ + framebuffers/qt/CMakeLists.txt | 8 ++++++ + framebuffers/xcb/CMakeLists.txt | 8 ++++++ + framebuffers/xcb/xcb_framebuffer.cpp | 40 +++++++++++++++------------- + krfb/CMakeLists.txt | 8 ++++++ + krfb/eventsmanager.cpp | 12 ++++----- + krfb/framebuffermanager.cpp | 14 +++++----- + krfb/invitationsrfbclient.cpp | 6 ++--- + krfb/invitationsrfbserver.cpp | 4 +-- + krfb/main.cpp | 8 +++--- + krfb/rfbclient.cpp | 1 - + krfb/rfbserver.cpp | 8 +++--- + krfb/rfbservermanager.cpp | 1 - + 13 files changed, 78 insertions(+), 47 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index aadd4b7..aa2b7b7 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -20,6 +20,7 @@ include(KDECompilerSettings NO_POLICY_SCOPE) + include(ECMInstallIcons) + include(ECMAddAppIcon) + include(ECMSetupVersion) ++include(ECMQtDeclareLoggingCategory) + include(FeatureSummary) + include(CheckIncludeFile) + +@@ -104,6 +105,12 @@ add_subdirectory(framebuffers) + add_subdirectory(doc) + add_subdirectory(icons) + ++ecm_qt_install_logging_categories( ++ EXPORT KRFB ++ FILE krfb.categories ++ DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} ++) ++ + feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) + ki18n_install(po) + if (KF5DocTools_FOUND) +diff --git a/framebuffers/qt/CMakeLists.txt b/framebuffers/qt/CMakeLists.txt +index 2629098..9019aad 100644 +--- a/framebuffers/qt/CMakeLists.txt ++++ b/framebuffers/qt/CMakeLists.txt +@@ -7,6 +7,14 @@ set (krfb_framebuffer_qt_SRCS + qtframebufferplugin.cpp + ) + ++ecm_qt_declare_logging_category(krfb_framebuffer_qt_SRCS ++ HEADER krfb_fb_qt_debug.h ++ IDENTIFIER KRFB_FB_QT ++ CATEGORY_NAME kf.rfb.framebuffer.qt ++ DESCRIPTION "KRFB Qt frambuffer plugin" ++ EXPORT KRFB ++) ++ + add_library(krfb_framebuffer_qt + MODULE + ${krfb_framebuffer_qt_SRCS} +diff --git a/framebuffers/xcb/CMakeLists.txt b/framebuffers/xcb/CMakeLists.txt +index 1f6979c..9779427 100644 +--- a/framebuffers/xcb/CMakeLists.txt ++++ b/framebuffers/xcb/CMakeLists.txt +@@ -7,6 +7,14 @@ set (krfb_framebuffer_xcb_SRCS + xcb_framebuffer.cpp + ) + ++ecm_qt_declare_logging_category(krfb_framebuffer_xcb_SRCS ++ HEADER krfb_fb_xcb_debug.h ++ IDENTIFIER KRFB_FB_XCB ++ CATEGORY_NAME kf.rfb.framebuffer.xcb ++ DESCRIPTION "KRFB XCB frambuffer plugin" ++ EXPORT KRFB ++) ++ + add_library(krfb_framebuffer_xcb MODULE ${krfb_framebuffer_xcb_SRCS}) + + target_link_libraries (krfb_framebuffer_xcb +diff --git a/framebuffers/xcb/xcb_framebuffer.cpp b/framebuffers/xcb/xcb_framebuffer.cpp +index 60e114e..07569bf 100644 +--- a/framebuffers/xcb/xcb_framebuffer.cpp ++++ b/framebuffers/xcb/xcb_framebuffer.cpp +@@ -8,6 +8,7 @@ + */ + + #include "xcb_framebuffer.h" ++#include "krfb_fb_xcb_debug.h" + + #include + #include +@@ -23,7 +24,6 @@ + #include + #include + #include +-#include + + + class KrfbXCBEventFilter: public QAbstractNativeEventFilter +@@ -68,7 +68,7 @@ KrfbXCBEventFilter::KrfbXCBEventFilter(XCBFrameBuffer *owner): + } + + #ifdef _DEBUG +- qDebug() << "xcb framebuffer: XDamage extension version:" << ++ qCDebug(KRFB_FB_XCB) << "xcb framebuffer: XDamage extension version:" << + xdamage_version->major_version << "." << xdamage_version->minor_version; + #endif + +@@ -163,7 +163,7 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent): + + QScreen *primaryScreen = QGuiApplication::primaryScreen(); + if (primaryScreen) { +- qDebug() << "xcb framebuffer: Primary screen: " << primaryScreen->name() ++ qCDebug(KRFB_FB_XCB) << "xcb framebuffer: Primary screen: " << primaryScreen->name() + << ", geometry: " << primaryScreen->geometry() + << ", depth: " << primaryScreen->depth(); + // +@@ -183,7 +183,7 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent): + XCB_IMAGE_FORMAT_Z_PIXMAP); + if (d->framebufferImage) { + #ifdef _DEBUG +- qDebug() << "xcb framebuffer: Got primary screen image. bpp: " << d->framebufferImage->bpp ++ qCDebug(KRFB_FB_XCB) << "xcb framebuffer: Got primary screen image. bpp: " << d->framebufferImage->bpp + << ", size (" << d->framebufferImage->width << d->framebufferImage->height << ")" + << ", depth: " << d->framebufferImage->depth + << ", padded width: " << d->framebufferImage->stride; +@@ -211,15 +211,15 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent): + nullptr); // data = 0 + if (d->updateTile) { + #ifdef _DEBUG +- qDebug() << "xcb framebuffer: Successfully created new empty image in native format"; +- qDebug() << " size: " << d->updateTile->width << "x" << d->updateTile->height +- << "(stride: " << d->updateTile->stride << ")"; +- qDebug() << " bpp, depth: " << d->updateTile->bpp << d->updateTile->depth; // 32, 24 +- qDebug() << " addr of base, data: " << d->updateTile->base << (void *)d->updateTile->data; +- qDebug() << " size: " << d->updateTile->size; +- qDebug() << " image byte order = " << d->updateTile->byte_order; // == 0 .._LSB_FIRST +- qDebug() << " image bit order = " << d->updateTile->bit_order; // == 1 .._MSB_FIRST +- qDebug() << " image plane_mask = " << d->updateTile->plane_mask; // == 16777215 == 0x00FFFFFF ++ qCDebug(KRFB_FB_XCB) << "xcb framebuffer: Successfully created new empty image in native format" ++ << "\n size: " << d->updateTile->width << "x" << d->updateTile->height ++ << "(stride: " << d->updateTile->stride << ")" ++ << "\n bpp, depth: " << d->updateTile->bpp << d->updateTile->depth // 32, 24 ++ << "\n addr of base, data: " << d->updateTile->base << (void *)d->updateTile->data ++ << "\n size: " << d->updateTile->size ++ << "\n image byte order = " << d->updateTile->byte_order // == 0 .._LSB_FIRST ++ << "\n image bit order = " << d->updateTile->bit_order // == 1 .._MSB_FIRST ++ << "\n image plane_mask = " << d->updateTile->plane_mask; // == 16777215 == 0x00FFFFFF + #endif + + // allocate shared memory block only once, make its size large enough +@@ -237,7 +237,7 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent): + xcb_shm_attach(QX11Info::connection(), d->shminfo.shmseg, d->shminfo.shmid, 0); + + #ifdef _DEBUG +- qDebug() << " shm id: " << d->shminfo.shmseg << ", addr: " << (void *)d->shminfo.shmaddr; ++ qCDebug(KRFB_FB_XCB) << " shm id: " << d->shminfo.shmseg << ", addr: " << (void *)d->shminfo.shmaddr; + #endif + + // will return 1 on success (yes!) +@@ -273,7 +273,7 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent): + } + + #ifdef _DEBUG +- qDebug() << "xcb framebuffer: XCBFrameBuffer(), xshm base event = " << d->x11EvtFilter->xshmBaseEvent ++ qCDebug(KRFB_FB_XCB) << "xcb framebuffer: XCBFrameBuffer(), xshm base event = " << d->x11EvtFilter->xshmBaseEvent + << ", xshm base error = " << d->x11EvtFilter->xdamageBaseError + << ", xdamage base event = " << d->x11EvtFilter->xdamageBaseEvent + << ", xdamage base error = " << d->x11EvtFilter->xdamageBaseError; +@@ -420,10 +420,12 @@ void XCBFrameBuffer::getServerFormat(rfbPixelFormat &format) { + format.blueMax = root_visualtype->blue_mask >> format.blueShift; + + #ifdef _DEBUG +- qDebug() << " Calculated redShift =" << (int)format.redShift; +- qDebug() << " Calculated greenShift =" << (int)format.greenShift; +- qDebug() << " Calculated blueShift =" << (int)format.blueShift; +- qDebug( " Calculated max values: R%d G%d B%d", ++ qCDebug(KRFB_FB_XCB, ++ " Calculated redShift = %d\n" ++ " Calculated greenShift = %d\n" ++ " Calculated blueShift = %d\n" ++ " Calculated max values: R%d G%d B%d", ++ format.redShift, format.greenShift, format.blueShift + format.redMax, format.greenMax, format.blueMax); + #endif + } else { +diff --git a/krfb/CMakeLists.txt b/krfb/CMakeLists.txt +index a292226..08066f6 100644 +--- a/krfb/CMakeLists.txt ++++ b/krfb/CMakeLists.txt +@@ -66,6 +66,14 @@ set (krfb_SRCS + invitationsrfbclient.cpp + ) + ++ecm_qt_declare_logging_category(krfb_SRCS ++ HEADER krfbdebug.h ++ IDENTIFIER KRFB ++ CATEGORY_NAME kf.rfb ++ DESCRIPTION "KRFB Application" ++ EXPORT KRFB ++) ++ + kconfig_add_kcfg_files (krfb_SRCS + krfbconfig.kcfgc + ) +diff --git a/krfb/eventsmanager.cpp b/krfb/eventsmanager.cpp +index 716d1fc..7289ced 100644 +--- a/krfb/eventsmanager.cpp ++++ b/krfb/eventsmanager.cpp +@@ -23,8 +23,8 @@ + #include "eventsplugin.h" + #include "krfbconfig.h" + #include "rfbservermanager.h" ++#include "krfbdebug.h" + +-#include + #include + + #include +@@ -79,18 +79,18 @@ void EventsManager::loadPlugins() + KPluginFactory *factory = KPluginLoader(data.fileName()).factory(); + + if (!factory) { +- qDebug() << "KPluginFactory could not load the plugin:" << data.fileName(); ++ qCDebug(KRFB) << "KPluginFactory could not load the plugin:" << data.fileName(); + continue; + } else { +- qDebug() << "found plugin at " << data.fileName(); ++ qCDebug(KRFB) << "found plugin at " << data.fileName(); + } + + EventsPlugin *plugin = factory->create(this); + if (plugin) { + m_plugins.insert(data.pluginId(), plugin); +- qDebug() << "Loaded plugin with name " << data.pluginId(); ++ qCDebug(KRFB) << "Loaded plugin with name " << data.pluginId(); + } else { +- qDebug() << "unable to load plugin for " << data.fileName(); ++ qCDebug(KRFB) << "unable to load plugin for " << data.fileName(); + } + unique.insert (data.name()); + } +@@ -113,6 +113,6 @@ QSharedPointer EventsManager::eventHandler() + } + + // No valid events plugin found. +- qDebug() << "No valid event handlers found. returning null."; ++ qCDebug(KRFB) << "No valid event handlers found. returning null."; + return QSharedPointer(); + } +diff --git a/krfb/framebuffermanager.cpp b/krfb/framebuffermanager.cpp +index 68b3093..a62117e 100644 +--- a/krfb/framebuffermanager.cpp ++++ b/krfb/framebuffermanager.cpp +@@ -22,8 +22,8 @@ + + #include "framebufferplugin.h" + #include "krfbconfig.h" ++#include "krfbdebug.h" + +-#include + #include + + #include +@@ -78,18 +78,18 @@ void FrameBufferManager::loadPlugins() + KPluginFactory *factory = KPluginLoader(data.fileName()).factory(); + + if (!factory) { +- qDebug() << "KPluginFactory could not load the plugin:" << data.fileName(); ++ qDebug(KRFB) << "KPluginFactory could not load the plugin:" << data.fileName(); + continue; + } else { +- qDebug() << "found plugin at " << data.fileName(); ++ qDebug(KRFB) << "found plugin at " << data.fileName(); + } + + FrameBufferPlugin *plugin = factory->create(this); + if (plugin) { + m_plugins.insert(data.pluginId(), plugin); +- qDebug() << "Loaded plugin with name " << data.pluginId(); ++ qDebug(KRFB) << "Loaded plugin with name " << data.pluginId(); + } else { +- qDebug() << "unable to load pluign for " << data.fileName(); ++ qDebug(KRFB) << "unable to load pluign for " << data.fileName(); + } + unique.insert (data.name()); + } +@@ -118,7 +118,7 @@ QSharedPointer FrameBufferManager::frameBuffer(WId id) + while (iter != m_plugins.constEnd()) { + + if (iter.key() == KrfbConfig::preferredFrameBufferPlugin()) { +- qDebug() << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin(); ++ qDebug(KRFB) << "Using FrameBuffer:" << KrfbConfig::preferredFrameBufferPlugin(); + + QSharedPointer frameBuffer(iter.value()->frameBuffer(id)); + +@@ -133,6 +133,6 @@ QSharedPointer FrameBufferManager::frameBuffer(WId id) + } + + // No valid framebuffer plugin found. +- qDebug() << "No valid framebuffer found. returning null."; ++ qDebug(KRFB) << "No valid framebuffer found. returning null."; + return QSharedPointer(); + } +diff --git a/krfb/invitationsrfbclient.cpp b/krfb/invitationsrfbclient.cpp +index f52cdc9..a0f7244 100644 +--- a/krfb/invitationsrfbclient.cpp ++++ b/krfb/invitationsrfbclient.cpp +@@ -24,11 +24,11 @@ + #include "krfbconfig.h" + #include "sockethelpers.h" + #include "connectiondialog.h" ++#include "krfbdebug.h" + + #include + #include + +-#include + #include + #include + #include +@@ -115,7 +115,7 @@ void PendingInvitationsRfbClient::onSocketActivated() + //the clientGoneHook which in turn will remove this RfbClient instance + //from the server manager and will call deleteLater() to delete it + if (d->client->sock == -1) { +- qDebug() << "disconnected from socket signal"; ++ qCDebug(KRFB) << "disconnected from socket signal"; + d->notifier->setEnabled(false); + rfbClientConnectionGone(d->client); + break; +@@ -125,7 +125,7 @@ void PendingInvitationsRfbClient::onSocketActivated() + + bool PendingInvitationsRfbClient::checkPassword(const QByteArray & encryptedPassword) + { +- qDebug() << "about to start authentication"; ++ qCDebug(KRFB) << "about to start authentication"; + + if(InvitationsRfbServer::instance->allowUnattendedAccess() && vncAuthCheckPassword( + InvitationsRfbServer::instance->unattendedPassword().toLocal8Bit(), +diff --git a/krfb/invitationsrfbserver.cpp b/krfb/invitationsrfbserver.cpp +index bdbd9cb..69b458c 100644 +--- a/krfb/invitationsrfbserver.cpp ++++ b/krfb/invitationsrfbserver.cpp +@@ -22,10 +22,10 @@ + #include "invitationsrfbclient.h" + #include "krfbconfig.h" + #include "rfbservermanager.h" ++#include "krfbdebug.h" + #include + #include + #include +-#include + #include + + #include +@@ -188,7 +188,7 @@ void InvitationsRfbServer::walletOpened(bool opened) + + } else { + +- qDebug() << "Could not open KWallet, Falling back to config file"; ++ qCDebug(KRFB) << "Could not open KWallet, Falling back to config file"; + KConfigGroup krfbConfig(KSharedConfig::openConfig(),"Security"); + + desktopPassword = KStringHandler::obscure(krfbConfig.readEntry( +diff --git a/krfb/main.cpp b/krfb/main.cpp +index fd778a7..15b8ec3 100644 +--- a/krfb/main.cpp ++++ b/krfb/main.cpp +@@ -20,6 +20,7 @@ + #include "invitationsrfbserver.h" + #include "krfbconfig.h" + #include "krfb_version.h" ++#include "krfbdebug.h" + + #include + #include +@@ -27,7 +28,6 @@ + #include + #include + +-#include + #include + #include + #include +@@ -59,13 +59,13 @@ static bool checkX11Capabilities() + + static void checkOldX11PluginConfig() { + if (KrfbConfig::preferredFrameBufferPlugin() == QStringLiteral("x11")) { +- qDebug() << "Detected deprecated configuration: preferredFrameBufferPlugin = x11"; ++ qCDebug(KRFB) << "Detected deprecated configuration: preferredFrameBufferPlugin = x11"; + KConfigSkeletonItem *config_item = KrfbConfig::self()->findItem( + QStringLiteral("preferredFrameBufferPlugin")); + if (config_item) { + config_item->setProperty(QStringLiteral("xcb")); + KrfbConfig::self()->save(); +- qDebug() << " Fixed preferredFrameBufferPlugin from x11 to xcb."; ++ qCDebug(KRFB) << " Fixed preferredFrameBufferPlugin from x11 to xcb."; + } + } + } +@@ -81,7 +81,7 @@ static void checkWaylandPluginConfig() + if (config_item) { + config_item->setProperty(QStringLiteral("pw")); + KrfbConfig::self()->save(); +- qDebug() << "Wayland: Fixed preferredFrameBufferPlugin to \"pw\"."; ++ qCDebug(KRFB) << "Wayland: Fixed preferredFrameBufferPlugin to \"pw\"."; + } + } + } +diff --git a/krfb/rfbclient.cpp b/krfb/rfbclient.cpp +index ff404ec..95d9998 100644 +--- a/krfb/rfbclient.cpp ++++ b/krfb/rfbclient.cpp +@@ -23,7 +23,6 @@ + #include "sockethelpers.h" + #include "eventsmanager.h" + #include +-#include + #include + #include //for bzero() + +diff --git a/krfb/rfbserver.cpp b/krfb/rfbserver.cpp +index 82a10a0..fef04d6 100644 +--- a/krfb/rfbserver.cpp ++++ b/krfb/rfbserver.cpp +@@ -19,11 +19,11 @@ + */ + #include "rfbserver.h" + #include "rfbservermanager.h" ++#include "krfbdebug.h" + #include + #include + #include + #include +-#include + #include + + struct RfbServer::Private +@@ -92,7 +92,7 @@ bool RfbServer::start() + if (!d->screen) { + d->screen = RfbServerManager::instance()->newScreen(); + if (!d->screen) { +- qDebug() << "Unable to get rbfserver screen"; ++ qCDebug(KRFB) << "Unable to get rbfserver screen"; + return false; + } + +@@ -125,14 +125,14 @@ bool RfbServer::start() + d->screen->authPasswdData = (void *)nullptr; + } + +- qDebug() << "Starting server. Listen port:" << listeningPort() ++ qCDebug(KRFB) << "Starting server. Listen port:" << listeningPort() + << "Listen Address:" << listeningAddress() + << "Password enabled:" << passwordRequired(); + + rfbInitServer(d->screen); + + if (!rfbIsActive(d->screen)) { +- qDebug() << "Failed to start server"; ++ qCDebug(KRFB) << "Failed to start server"; + rfbShutdownServer(d->screen, false); + return false; + }; +diff --git a/krfb/rfbservermanager.cpp b/krfb/rfbservermanager.cpp +index e7262c4..2385f1b 100644 +--- a/krfb/rfbservermanager.cpp ++++ b/krfb/rfbservermanager.cpp +@@ -29,7 +29,6 @@ + #include + #include + #include +-#include + + #include + #include +-- +2.28.0 + diff --git a/0001-Replace-KLineEdit-with-QLineEdit.patch b/0001-Replace-KLineEdit-with-QLineEdit.patch new file mode 100644 index 0000000..d0d44f6 --- /dev/null +++ b/0001-Replace-KLineEdit-with-QLineEdit.patch @@ -0,0 +1,84 @@ +From 58eab99e6b5fbcd7c9bb4f9a5f0bd5feb0b3edf3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Wed, 12 Aug 2020 18:27:23 +0200 +Subject: [PATCH] Replace KLineEdit with QLineEdit + +The password field uses none of the KLineEdit features like completion, +so QLineEdit suffices. +--- + CMakeLists.txt | 1 - + krfb/CMakeLists.txt | 1 - + krfb/mainwindow.cpp | 3 +-- + krfb/mainwindow.h | 4 ++-- + 4 files changed, 3 insertions(+), 6 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index aadd4b7..bd9ed41 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -29,7 +29,6 @@ find_package(Qt5 ${QT_MIN_VERSION} REQUIRED COMPONENTS Core DBus Widgets X11Extr + + find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS + I18n +- Completion + Config + CoreAddons + Crash +diff --git a/krfb/CMakeLists.txt b/krfb/CMakeLists.txt +index a292226..43752b5 100644 +--- a/krfb/CMakeLists.txt ++++ b/krfb/CMakeLists.txt +@@ -93,7 +93,6 @@ target_link_libraries (krfb + ${X11_X11_LIB} + ${X11_Xdamage_LIB} + Qt5::Network +- KF5::Completion + KF5::CoreAddons + KF5::DBusAddons + KF5::DNSSD +diff --git a/krfb/mainwindow.cpp b/krfb/mainwindow.cpp +index 555d301..14924f6 100644 +--- a/krfb/mainwindow.cpp ++++ b/krfb/mainwindow.cpp +@@ -21,7 +21,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -107,7 +106,7 @@ MainWindow::MainWindow(QWidget *parent) + setAttribute(Qt::WA_DeleteOnClose, false); + + m_passwordEditable = false; +- m_passwordLineEdit = new KLineEdit(this); ++ m_passwordLineEdit = new QLineEdit(this); + m_passwordLineEdit->setVisible(false); + m_passwordLineEdit->setAlignment(Qt::AlignHCenter); + +diff --git a/krfb/mainwindow.h b/krfb/mainwindow.h +index 9f2939e..bbe69cd 100644 +--- a/krfb/mainwindow.h ++++ b/krfb/mainwindow.h +@@ -15,7 +15,7 @@ + + #include + +-class KLineEdit; ++class QLineEdit; + + class MainWindow : public KXmlGuiWindow + { +@@ -43,7 +43,7 @@ class MainWindow : public KXmlGuiWindow + private: + Ui::MainWidget m_ui; + bool m_passwordEditable; +- KLineEdit *m_passwordLineEdit; ++ QLineEdit *m_passwordLineEdit; + }; + + #endif +-- +2.28.0 + diff --git a/0003-Compensate-for-global-scale-factor-when-using-xcb-fb.patch b/0003-Compensate-for-global-scale-factor-when-using-xcb-fb.patch new file mode 100644 index 0000000..485e2ba --- /dev/null +++ b/0003-Compensate-for-global-scale-factor-when-using-xcb-fb.patch @@ -0,0 +1,40 @@ +From a5656776a21f8b6f893431f9e18327a24ad1fa9c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20Br=C3=BCns?= +Date: Thu, 13 Aug 2020 09:30:06 +0200 +Subject: [PATCH 3/3] Compensate for global scale factor when using xcb fb + plugin + +The screen geometry is reported in device independent pixels, so it has +to be multiplied by the devicePixelRatio to get the size of the underlying +framebuffer. Otherwise, only the top left of the screen will be captured. + +This matches the behavior of QScreen::grabWindow(...), which also +returns a QPixmap of the given size scaled by devicePixelRatio. +--- + framebuffers/xcb/xcb_framebuffer.cpp | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/framebuffers/xcb/xcb_framebuffer.cpp b/framebuffers/xcb/xcb_framebuffer.cpp +index 07569bf..626b3ad 100644 +--- a/framebuffers/xcb/xcb_framebuffer.cpp ++++ b/framebuffers/xcb/xcb_framebuffer.cpp +@@ -163,11 +163,15 @@ XCBFrameBuffer::XCBFrameBuffer(WId winid, QObject *parent): + + QScreen *primaryScreen = QGuiApplication::primaryScreen(); + if (primaryScreen) { ++ qreal scaleFactor = primaryScreen->devicePixelRatio(); ++ d->area = { primaryScreen->geometry().topLeft() * scaleFactor, ++ primaryScreen->geometry().bottomRight() * scaleFactor }; + qCDebug(KRFB_FB_XCB) << "xcb framebuffer: Primary screen: " << primaryScreen->name() + << ", geometry: " << primaryScreen->geometry() ++ << ", device scaling: " << scaleFactor ++ << ", native size: " << d->area + << ", depth: " << primaryScreen->depth(); + // +- d->area = primaryScreen->geometry(); + } else { + qWarning() << "xcb framebuffer: ERROR: Failed to get application's primary screen info!"; + return; +-- +2.28.0 + diff --git a/krfb.changes b/krfb.changes index 674f297..c5c9bf5 100644 --- a/krfb.changes +++ b/krfb.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Mon Aug 31 15:57:48 UTC 2020 - Stefan BrĂ¼ns + +- Fix wrong framebuffer size when display scale is not 1.0 + * Add 0001-Declare-and-use-logging-categories.patch + * Add 0003-Compensate-for-global-scale-factor-when-using-xcb-fb.patch +- Cleanup build dependencies (remove KF5Completion and telepathy): + * Add 0001-Replace-KLineEdit-with-QLineEdit.patch + ------------------------------------------------------------------- Sun Aug 9 09:09:57 UTC 2020 - Christophe Giboudeaux diff --git a/krfb.spec b/krfb.spec index 17ce988..ed72647 100644 --- a/krfb.spec +++ b/krfb.spec @@ -27,14 +27,18 @@ Summary: Screen sharing using the VNC/RFB protocol License: GPL-2.0-or-later Group: Productivity/Networking/Other Source: https://download.kde.org/stable/release-service/%{version}/src/%{name}-%{version}.tar.xz +# PATCH-FIX-UPSTREAM +Patch0: 0001-Declare-and-use-logging-categories.patch +# PATCH-FIX-UPSTREAM +Patch1: 0001-Replace-KLineEdit-with-QLineEdit.patch +# PATCH-FIX-UPSTREAM +Patch2: 0003-Compensate-for-global-scale-factor-when-using-xcb-fb.patch BuildRequires: LibVNCServer-devel BuildRequires: extra-cmake-modules BuildRequires: pipewire-devel BuildRequires: pkgconfig -BuildRequires: telepathy-qt5-devel BuildRequires: update-desktop-files BuildRequires: xcb-util-image-devel -BuildRequires: cmake(KF5Completion) BuildRequires: cmake(KF5Config) BuildRequires: cmake(KF5CoreAddons) BuildRequires: cmake(KF5Crash) @@ -68,12 +72,15 @@ VNC-compatible server to share KDE desktops. %prep %setup -q +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 %build %ifarch ppc ppc64 export RPM_OPT_FLAGS="%{optflags} -mminimal-toc" %endif - %cmake_kf5 -d build -- -DBUILD_EXPERIMENTAL_TUBES_SUPPORT="on" + %cmake_kf5 -d build -- %cmake_build %install @@ -99,6 +106,7 @@ export RPM_OPT_FLAGS="%{optflags} -mminimal-toc" %{_kf5_servicetypesdir}/krfb-framebuffer*.desktop %{_kf5_servicetypesdir}/krfb-events.desktop %{_kf5_sharedir}/krfb/ +%{_kf5_debugdir}/krfb.categories %if %{with lang} %files lang -f %{name}.lang