1
0
mirror of https://github.com/KDE/krfb synced 2026-07-02 00:01:18 -07:00

Compare commits

...

27 Commits

Author SHA1 Message Date
Heiko Becker
874c804ab8 GIT_SILENT Update Appstream for new release 2021-10-31 11:32:38 +01:00
Heiko Becker
383b437e18 GIT_SILENT Upgrade release service version to 21.08.3. 2021-10-31 11:10:33 +01:00
l10n daemon script
336a82e188 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2021-10-12 02:19:26 +00:00
l10n daemon script
b40ec95bd0 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2021-10-11 02:22:09 +00:00
Heiko Becker
13316b761d GIT_SILENT Update Appstream for new release 2021-10-05 00:29:55 +02:00
Heiko Becker
8bf9b96ee3 GIT_SILENT Upgrade release service version to 21.08.2. 2021-10-05 00:07:43 +02:00
l10n daemon script
3191a85976 GIT_SILENT made messages (after extraction) 2021-09-10 01:43:37 +00:00
Heiko Becker
99ef2060a8 GIT_SILENT Update Appstream for new release 2021-08-27 23:13:18 +02:00
Heiko Becker
320158de70 GIT_SILENT Upgrade release service version to 21.08.1. 2021-08-27 22:41:34 +02:00
Heiko Becker
08bac276d3 GIT_SILENT Update Appstream for new release 2021-08-05 00:06:47 +02:00
Heiko Becker
6528ad1fcc GIT_SILENT Upgrade release service version to 21.08.0. 2021-08-04 23:41:38 +02:00
Heiko Becker
cff205798c GIT_SILENT Upgrade release service version to 21.07.90. 2021-07-27 21:49:29 +02:00
l10n daemon script
828a402b4a SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2021-07-19 02:16:30 +00:00
l10n daemon script
406ebc9e69 GIT_SILENT made messages (after extraction) 2021-07-19 01:41:58 +00:00
Albert Astals Cid
7fb0a163a5 GIT_SILENT Upgrade release service version to 21.07.80. 2021-07-10 19:02:21 +02:00
Laurent Montel
c729e9e048 Modernize code 2021-07-09 08:53:14 +02:00
Laurent Montel
45548e020a Add missing override + add nullptr 2021-07-09 08:53:14 +02:00
Laurent Montel
dc64af6f5e Remove code for old qt version 2021-07-09 08:53:14 +02:00
Laurent Montel
2af26baf56 GIT_SILENT: time to increase version 2021-07-09 08:53:14 +02:00
Laurent Montel
e07f2c1f11 GIT_SILENT: ignore file 2021-07-09 08:53:14 +02:00
Laurent Montel
e5e2b293e8 GIT_SILENT: add support for cmake preset support 2021-07-09 08:53:14 +02:00
Heiko Becker
6cb2b22bf6 GIT_SILENT Update Appstream for new release
(cherry picked from commit 464d1a60a1)
2021-07-05 21:21:15 +02:00
Friedrich W. H. Kossebau
0316c376f2 Port away from deprecated KDNSSD CamelCase include prefixes
GIT_SILENT
2021-06-21 15:37:01 +02:00
Aleix Pol
b8f972d59e Fix crash when the destination stride != source stride
When we allocate the locally mapped texture size, use the announced
stride (aka bytes per line) instead of the texture width. Otherwise we
might overflow and crash eventually.

BUG: 438815
2021-06-17 21:03:56 +02:00
l10n daemon script
073cec3dc3 SVN_SILENT made messages (.desktop file) - always resolve ours
In case of conflict in i18n, keep the version of the branch "ours"
To resolve a particular conflict, "git checkout --ours path/to/file.desktop"
2021-06-16 01:23:07 +00:00
l10n daemon script
58088b6ca0 GIT_SILENT made messages (after extraction) 2021-06-16 00:18:37 +00:00
Heiko Becker
a4cc0e8e7b GIT_SILENT Update Appstream for new release
(cherry picked from commit d04a36023a)
2021-06-05 23:20:56 +02:00
20 changed files with 205 additions and 45 deletions

26
.gitignore vendored Normal file
View File

@@ -0,0 +1,26 @@
# Ignore the following files
*~
*.[oa]
*.diff
*.kate-swp
*.kdev4
.kdev_include_paths
*.kdevelop.pcs
*.moc
*.moc.cpp
*.orig
*.user
.*.swp
.swp.*
Doxyfile
Makefile
/build*/
.cmake/
CMakeLists.txt.user*
*.unc-backup*
.clang-format
/compile_commands.json
.clangd
.cache
.idea
/cmake-build*

View File

@@ -2,14 +2,14 @@ cmake_minimum_required(VERSION 3.16)
# KDE Application Version, managed by release script
set (RELEASE_SERVICE_VERSION_MAJOR "21")
set (RELEASE_SERVICE_VERSION_MINOR "07")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set (RELEASE_SERVICE_VERSION_MINOR "08")
set (RELEASE_SERVICE_VERSION_MICRO "3")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(krfb VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION 5.12.0)
set(KF5_MIN_VERSION 5.68.0)
set(QT_MIN_VERSION 5.15.0)
set(KF5_MIN_VERSION 5.83.0)
find_package(ECM ${KF5_MIN_VERSION} NO_MODULE REQUIRED)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules" ${ECM_MODULE_PATH})

128
CMakePresets.json Normal file
View File

@@ -0,0 +1,128 @@
{
"version": 2,
"configurePresets": [
{
"name": "dev",
"displayName": "Build as debug",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "asan",
"displayName": "Build with Asan support.",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-asan",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"ECM_ENABLE_SANITIZERS" : "'address;undefined'",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "dev-clang",
"displayName": "dev-clang",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
},
"environment": {
"CXX": "clang++",
"CCACHE_DISABLE": "ON"
}
},
{
"name": "unity",
"displayName": "Build with CMake unity support.",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-unity",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug",
"CMAKE_UNITY_BUILD": "ON",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "release",
"displayName": "Build as release mode.",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-release",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"name": "profile",
"displayName": "profile",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-profile",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo",
"CMAKE_EXPORT_COMPILE_COMMANDS": "ON"
}
},
{
"name": "clazy",
"displayName": "clazy",
"generator": "Ninja",
"binaryDir": "${sourceDir}/build-clazy",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
},
"environment": {
"CXX": "clazy",
"CCACHE_DISABLE": "ON"
}
}
],
"buildPresets": [
{
"name": "dev",
"configurePreset": "dev"
},
{
"name": "release",
"configurePreset": "release"
},
{
"name": "dev-clang",
"configurePreset": "dev-clang"
},
{
"name": "asan",
"configurePreset": "asan"
},
{
"name": "unity",
"configurePreset": "unity"
},
{
"name": "clazy",
"configurePreset": "clazy",
"environment": {
"CLAZY_CHECKS" : "level0,level1,detaching-member,ifndef-define-typo,isempty-vs-count,qrequiredresult-candidates,reserve-candidates,signal-with-return-value,unneeded-cast,function-args-by-ref,function-args-by-value,returning-void-expression,no-ctor-missing-parent-argument,isempty-vs-count,qhash-with-char-pointer-key,raw-environment-function,qproperty-type-mismatch,old-style-connect,qstring-allocations,container-inside-loop,heap-allocated-small-trivial-type,inefficient-qlist,qstring-varargs,level2,detaching-member,heap-allocated-small-trivial-type,isempty-vs-count,qstring-varargs,qvariant-template-instantiation,raw-environment-function,reserve-candidates,signal-with-return-value,thread-with-slots,no-ctor-missing-parent-argument,no-missing-typeinfo",
"CCACHE_DISABLE" : "ON"
}
}
],
"testPresets": [
{
"name": "dev",
"configurePreset": "dev",
"output": {"outputOnFailure": true},
"execution": {"noTestsAction": "error", "stopOnFailure": false}
},
{
"name": "asan",
"configurePreset": "asan",
"output": {"outputOnFailure": true},
"execution": {"noTestsAction": "error", "stopOnFailure": true}
}
]
}

View File

@@ -0,0 +1,2 @@
# SPDX-FileCopyrightText: 2021 Laurent Montel <montel@kde.org>
# SPDX-License-Identifier: BSD-3-Clause

View File

@@ -561,7 +561,7 @@ void PWFrameBuffer::Private::onStreamStateChanged(void *data, pw_stream_state /*
void PWFrameBuffer::Private::onStreamParamChanged(void *data, uint32_t id, const struct spa_pod *format)
{
qInfo() << "Stream format changed";
auto *d = static_cast<PWFrameBuffer::Private *>(data);
auto d = static_cast<PWFrameBuffer::Private *>(data);
if (!format || id != SPA_PARAM_Format) {
return;
@@ -614,7 +614,7 @@ void PWFrameBuffer::Private::onStreamParamChanged(void *data, uint32_t id, const
*/
void PWFrameBuffer::Private::onStreamProcess(void *data)
{
auto *d = static_cast<PWFrameBuffer::Private *>(data);
auto d = static_cast<PWFrameBuffer::Private *>(data);
pw_buffer* next_buffer;
pw_buffer* buffer = nullptr;
@@ -640,7 +640,7 @@ void PWFrameBuffer::Private::onStreamProcess(void *data)
void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
{
auto *spaBuffer = pwBuffer->buffer;
auto spaBuffer = pwBuffer->buffer;
uint8_t *src = nullptr;
if (spaBuffer->datas[0].chunk->size == 0) {
@@ -649,6 +649,7 @@ void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
}
std::function<void()> cleanup;
const qint64 srcStride = spaBuffer->datas[0].chunk->stride;
if (spaBuffer->datas->type == SPA_DATA_MemFd) {
uint8_t *map = static_cast<uint8_t*>(mmap(
nullptr, spaBuffer->datas->maxsize + spaBuffer->datas->mapoffset,
@@ -704,7 +705,7 @@ void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
glBindTexture(GL_TEXTURE_2D, texture);
glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
src = static_cast<uint8_t*>(malloc(streamSize.width() * streamSize.height() * BYTES_PER_PIXEL));
src = static_cast<uint8_t*>(malloc(srcStride * streamSize.height()));
GLenum glFormat = GL_BGRA;
switch (videoFormat->format) {
@@ -792,7 +793,7 @@ void PWFrameBuffer::Private::handleFrame(pw_buffer *pwBuffer)
}
const qint32 dstStride = videoSize.width() * BYTES_PER_PIXEL;
const qint32 srcStride = spaBuffer->datas[0].chunk->stride;
Q_ASSERT(dstStride <= srcStride);
if (!videoFullHeight && (videoMetadata->region.position.y + videoSize.height() <= streamSize.height())) {
src += srcStride * videoMetadata->region.position.y;

View File

@@ -24,11 +24,11 @@ class PWFrameBuffer: public FrameBuffer
{
Q_OBJECT
public:
typedef struct {
using Stream = struct {
uint nodeId;
QVariantMap map;
} Stream;
typedef QList<Stream> Streams;
};
using Streams = QList<Stream>;
PWFrameBuffer(WId winid, QObject *parent = nullptr);
virtual ~PWFrameBuffer() override;

View File

@@ -40,8 +40,8 @@
"Id": "qt",
"License": "GPL",
"Name": "Qt Framebuffer for KRfb",
"Name[ca@valencia]": "«Framebuffer» de les Qt per al KRfb.",
"Name[ca]": "«Framebuffer» de les Qt per al KRfb.",
"Name[ca@valencia]": "«Framebuffer» de les Qt per al KRfb",
"Name[ca]": "«Framebuffer» de les Qt per al KRfb",
"Name[cs]": "Qt Framebuffer pro KRfb",
"Name[da]": "Qt-framebuffer til KRfb",
"Name[de]": "Qt-Framebuffer für KRfb",

View File

@@ -26,11 +26,7 @@ QtFrameBuffer::QtFrameBuffer(WId id, QObject *parent)
if (screen) {
primaryScreen = screen;
fbImage = screen->grabWindow(win).toImage();
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
fb = new char[fbImage.sizeInBytes()];
#else
fb = new char[fbImage.byteCount()];
#endif
} else {
fb = nullptr;
primaryScreen = nullptr;
@@ -108,11 +104,7 @@ void QtFrameBuffer::updateFrameBuffer()
tiles.append(img.rect());
#endif
#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0))
memcpy(fb, img.bits(), static_cast<size_t>(img.sizeInBytes()));
#else
memcpy(fb, img.bits(), img.byteCount());
#endif
fbImage = img;
}

View File

@@ -40,8 +40,8 @@
"Id": "xcb",
"License": "GPL",
"Name": "X11 Framebuffer for KRfb",
"Name[ca@valencia]": "«Framebuffer» de l'X11 per al KRfb.",
"Name[ca]": "«Framebuffer» de l'X11 per al KRfb.",
"Name[ca@valencia]": "«Framebuffer» de l'X11 per al KRfb",
"Name[ca]": "«Framebuffer» de l'X11 per al KRfb",
"Name[cs]": "X11 Framebuffer pro KRfb",
"Name[da]": "X11-framebuffer til KRfb",
"Name[de]": "X11-Framebuffer für KRfb",

View File

@@ -37,9 +37,9 @@ ConnectionDialog<UI>::ConnectionDialog(QWidget *parent)
: QDialog(parent)
{
setWindowTitle(i18n("New Connection"));
QDialogButtonBox *buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
QWidget *mainWidget = new QWidget(this);
QVBoxLayout *mainLayout = new QVBoxLayout;
auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel);
auto mainWidget = new QWidget(this);
auto mainLayout = new QVBoxLayout;
setLayout(mainLayout);
mainLayout->addWidget(mainWidget);
QPushButton *okButton = buttonBox->button(QDialogButtonBox::Ok);

View File

@@ -34,7 +34,7 @@ class KRFBPRIVATE_EXPORT FrameBufferPlugin : public QObject
Q_OBJECT
public:
FrameBufferPlugin(QObject *parent, const QVariantList &args);
explicit FrameBufferPlugin(QObject *parent, const QVariantList &args);
~FrameBufferPlugin() override;
virtual FrameBuffer *frameBuffer(WId id) = 0;

View File

@@ -33,7 +33,13 @@
#include <KStringHandler>
#include <KWallet/KWallet>
#include <dnssd/publicservice.h>
#include <kdnssd_version.h>
#if KDNSSD_VERSION >= QT_VERSION_CHECK(5, 84, 0)
#include <KDNSSD/PublicService>
#else
#include <DNSSD/PublicService>
#endif
using KWallet::Wallet;
// used for KWallet folder name

View File

@@ -3,8 +3,8 @@ Type=ServiceType
X-KDE-ServiceType=krfb/events
Comment=Event plugins for KRfb
Comment[ca]=Connectors d'esdeveniments per al KRfb.
Comment[ca@valencia]=Connectors d'esdeveniments per al KRfb.
Comment[ca]=Connectors d'esdeveniments per al KRfb
Comment[ca@valencia]=Connectors d'esdeveniments per al KRfb
Comment[cs]=Moduly událostí pro KRfb
Comment[da]=Hændelses-plugins til KRfb
Comment[de]=Ereignis-Module für KRfb

View File

@@ -1,8 +1,8 @@
{
"KPlugin": {
"Description": "Events plugins for KRfb",
"Description[ca@valencia]": "Connectors d'esdeveniments per al KRfb.",
"Description[ca]": "Connectors d'esdeveniments per al KRfb.",
"Description[ca@valencia]": "Connectors d'esdeveniments per al KRfb",
"Description[ca]": "Connectors d'esdeveniments per al KRfb",
"Description[cs]": "Moduly událostí pro KRfb",
"Description[da]": "Hændelses-plugins til KRfb",
"Description[de]": "Ereignis-Module für KRfb",

View File

@@ -5,8 +5,8 @@ X-KDE-ServiceType=krfb/framebuffer
Comment=Frame Buffer plugins for KRfb
Comment[bg]=Приставки за фреймбуфер за KRfb
Comment[bs]=Priključci framebafera za KRfb
Comment[ca]=Connectors de «framebuffer» per al KRfb.
Comment[ca@valencia]=Connectors de «framebuffer» per al KRfb.
Comment[ca]=Connectors de «framebuffer» per al KRfb
Comment[ca@valencia]=Connectors de «framebuffer» per al KRfb
Comment[cs]=Moduly Frame bufferu pro KRfb
Comment[da]=Framebuffer-plugins til KRfb
Comment[de]=Framebuffer-Module für KRfb

View File

@@ -1,8 +1,8 @@
{
"KPlugin": {
"Description": "Frame Buffer plugins for KRfb",
"Description[ca@valencia]": "Connectors de «Frame Buffer» per al KRfb.",
"Description[ca]": "Connectors de «Frame Buffer» per al KRfb.",
"Description[ca@valencia]": "Connectors de «Frame Buffer» per al KRfb",
"Description[ca]": "Connectors de «Frame Buffer» per al KRfb",
"Description[cs]": "Moduly Frame bufferu pro KRfb",
"Description[da]": "Framebuffer-plugins til KRfb",
"Description[de]": "Framebuffer-Module für KRfb",

View File

@@ -47,7 +47,7 @@ public:
class Security: public QWidget, public Ui::Security
{
public:
Security(QWidget *parent = nullptr) : QWidget(parent) {
explicit Security(QWidget *parent = nullptr) : QWidget(parent) {
setupUi(this);
walletWarning = new KMessageWidget(this);
walletWarning->setText(i18n("Storing passwords in config file is insecure!"));
@@ -107,7 +107,7 @@ MainWindow::MainWindow(QWidget *parent)
m_passwordLineEdit->setVisible(false);
m_passwordLineEdit->setAlignment(Qt::AlignHCenter);
QWidget *mainWidget = new QWidget;
auto mainWidget = new QWidget;
m_ui.setupUi(mainWidget);
m_ui.krfbIconLabel->setPixmap(QIcon::fromTheme(QStringLiteral("krfb")).pixmap(128));
m_ui.enableUnattendedCheckBox->setChecked(
@@ -252,7 +252,7 @@ void MainWindow::showConfiguration()
return;
}
KConfigDialog *dialog = new KConfigDialog(this, QStringLiteral("settings"), KrfbConfig::self());
auto dialog = new KConfigDialog(this, QStringLiteral("settings"), KrfbConfig::self());
dialog->addPage(new TCP, i18n("Network"), QStringLiteral("network-wired"));
dialog->addPage(new Security, i18n("Security"), QStringLiteral("security-high"));
dialog->addPage(new ConfigFramebuffer, i18n("Screen capture"), QStringLiteral("video-display"));

View File

@@ -43,7 +43,7 @@ class MainWindow : public KXmlGuiWindow
private:
Ui::MainWidget m_ui;
bool m_passwordEditable;
QLineEdit *m_passwordLineEdit;
QLineEdit *m_passwordLineEdit = nullptr;
};
#endif

View File

@@ -43,11 +43,14 @@
<summary xml:lang="ca">Comparteix l'escriptori amb un altre ordinador a través de VNC</summary>
<summary xml:lang="ca-valencia">Comparteix l'escriptori amb un altre ordinador a través de VNC</summary>
<summary xml:lang="cs">Sdílejte své pracovní prostředí na jiný počítač pomocí VNC</summary>
<summary xml:lang="da">Del dit skrivebord til en anden computer via VNC</summary>
<summary xml:lang="de">Verbindung Ihrer Arbeitsfläche zu anderen Rechnern über VNC</summary>
<summary xml:lang="el">Μοιραστείτε την επιφάνεια εργασίας σας με άλλον υπολογιστή μέσω VNC</summary>
<summary xml:lang="en-GB">Share your desktop to another computer via VNC</summary>
<summary xml:lang="es">Compartir su escritorio con otro equipo usando VNC</summary>
<summary xml:lang="et">Oma töölaua jagamine VNC kaudu teise arvutisse</summary>
<summary xml:lang="eu">Partekatu zure mahaigaina beste ordenagailu batekin VNC erabiliz</summary>
<summary xml:lang="fi">Jaa työpöytä toiselle koneelle VNC:n kautta</summary>
<summary xml:lang="fr">Partager votre bureau avec un autre ordinateur grâce à « VNC »</summary>
<summary xml:lang="ia">Compartir tu scriptorio a un altere computator via VNC</summary>
<summary xml:lang="id">Bagikan desktopmu ke komputer lainnya via VNC</summary>
@@ -145,9 +148,9 @@
</provides>
<project_group>KDE</project_group>
<releases>
<release version="21.04.1" date="2021-05-13"/>
<release version="21.04.0" date="2021-04-22"/>
<release version="20.12.3" date="2021-03-04"/>
<release version="20.12.2" date="2021-02-04"/>
<release version="21.08.3" date="2021-11-04"/>
<release version="21.08.2" date="2021-10-07"/>
<release version="21.08.1" date="2021-09-02"/>
<release version="21.08.0" date="2021-08-12"/>
</releases>
</component>

View File

@@ -84,6 +84,8 @@ GenericName[el]=Κοινή χρήση επιφάνειας εργασίας (VNC
GenericName[en_GB]=Desktop Sharing (VNC)
GenericName[es]=Escritorio compartido (VNC)
GenericName[et]=Töölaua jagamine (VNC)
GenericName[eu]=Mahaigaina partekatzea (VNC)
GenericName[fi]=Työpöydän jakaminen (VNC)
GenericName[fr]=Partage de bureaux (VNC)
GenericName[ia]=Compartir de scriptorio (VNC)
GenericName[it]=Condivisione del desktop (VNC)