SHA256
1
0
forked from pool/krfb

Accepting request 830877 from home:StefanBruens:branches:openSUSE:Factory

- 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

OBS-URL: https://build.opensuse.org/request/show/830877
OBS-URL: https://build.opensuse.org/package/show/KDE:Applications/krfb?expand=0&rev=135
This commit is contained in:
Christophe Giboudeaux 2020-08-31 18:52:16 +00:00 committed by Git OBS Bridge
parent 9576f296c7
commit 8fea824d0c
5 changed files with 632 additions and 3 deletions

View File

@ -0,0 +1,488 @@
From 7299923943687a9e9e411c6b0a8d74e04d5a9b04 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
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 <xcb/xcb.h>
#include <xcb/xproto.h>
@@ -23,7 +24,6 @@
#include <QGuiApplication>
#include <QScreen>
#include <QAbstractNativeEventFilter>
-#include <QDebug>
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 <QDebug>
#include <QGlobalStatic>
#include <KPluginFactory>
@@ -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<EventsPlugin>(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<EventHandler> 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<EventHandler>();
}
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 <QDebug>
#include <QGlobalStatic>
#include <KPluginFactory>
@@ -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<FrameBufferPlugin>(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<FrameBuffer> 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> frameBuffer(iter.value()->frameBuffer(id));
@@ -133,6 +133,6 @@ QSharedPointer<FrameBuffer> 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<FrameBuffer>();
}
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 <KNotification>
#include <KLocalizedString>
-#include <QDebug>
#include <QSocketNotifier>
#include <poll.h>
#include <KConfigGroup>
@@ -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 <QTimer>
#include <QApplication>
#include <QHostInfo>
-#include <QDebug>
#include <QRandomGenerator>
#include <KLocalizedString>
@@ -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 <KAboutData>
#include <KDBusService>
@@ -27,7 +28,6 @@
#include <KMessageBox>
#include <KWindowSystem>
-#include <QDebug>
#include <QPixmap>
#include <qwindowdefs.h>
#include <QX11Info>
@@ -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 <QSocketNotifier>
-#include <QDebug>
#include <poll.h>
#include <strings.h> //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 <QSocketNotifier>
#include <QApplication>
#include <QClipboard>
#include <QPointer>
-#include <QDebug>
#include <QX11Info>
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 <QDesktopWidget>
#include <QGlobalStatic>
#include <QHostInfo>
-#include <QDebug>
#include <KLocalizedString>
#include <KUser>
--
2.28.0

View File

@ -0,0 +1,84 @@
From 58eab99e6b5fbcd7c9bb4f9a5f0bd5feb0b3edf3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
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 <KMessageWidget>
#include <KStandardAction>
#include <KActionCollection>
-#include <KLineEdit>
#include <KNewPasswordDialog>
#include <KPluginLoader>
#include <KPluginMetaData>
@@ -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 <KXmlGuiWindow>
-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

View File

@ -0,0 +1,40 @@
From a5656776a21f8b6f893431f9e18327a24ad1fa9c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Stefan=20Br=C3=BCns?= <stefan.bruens@rwth-aachen.de>
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

View File

@ -1,3 +1,12 @@
-------------------------------------------------------------------
Mon Aug 31 15:57:48 UTC 2020 - Stefan Brüns <stefan.bruens@rwth-aachen.de>
- 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 <christophe@krop.fr>

View File

@ -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