summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2021-12-07 21:02:41 +0000
committer Eric Hameleers <alien@slackware.com>2021-12-08 08:59:52 +0100
commit05c9b4b9d66f98f4603c8383ddb2b22f485b8269 (patch)
treeda9fc9f6acca9b67079d09d5e42d7dec0035f84d /source
parent98305afe736482e41db5c6d17ac94abe411bee86 (diff)
downloadcurrent-05c9b4b9d66f98f4603c8383ddb2b22f485b8269.tar.gz
current-05c9b4b9d66f98f4603c8383ddb2b22f485b8269.tar.xz
Tue Dec 7 21:02:41 UTC 202120211207210241
ap/vim-8.2.3754-x86_64-1.txz: Upgraded. d/Cython-0.29.25-x86_64-1.txz: Upgraded. d/rust-1.57.0-x86_64-1.txz: Upgraded. kde/kscreen-5.23.4-x86_64-2.txz: Rebuilt. Applied upstream patches: [PATCH 1/4] Compute logicalSize taking into account current config. [PATCH 2/4] Update screen size when mode changes. [PATCH 3/4] Ensure to set outputs explicitLogicalSize upon loading config. [PATCH 4/4] Fix output identifier window positioning in wayland with some scale. Thanks to Heinz Wiesinger. kde/libkscreen-5.23.4-x86_64-2.txz: Rebuilt. Applied upstream patches: [PATCH] XrandR: Fix impossibilty to change resolution in VirtualBox. [PATCH] Under X11 ignore per-screen scale to compute logicalSize. Thanks to Heinz Wiesinger. l/glib-networking-2.70.1-x86_64-1.txz: Upgraded. l/imagemagick-7.1.0_17-x86_64-1.txz: Upgraded. l/vte-0.66.2-x86_64-1.txz: Upgraded. n/dovecot-2.3.17.1-x86_64-1.txz: Upgraded. xap/mozilla-firefox-91.4.0esr-x86_64-1.txz: Upgraded. This release contains security fixes and improvements. For more information, see: https://www.mozilla.org/en-US/firefox/91.4.0/releasenotes/ https://www.mozilla.org/security/advisories/mfsa2021-53/ https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43536 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43537 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43538 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43539 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43541 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43542 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43543 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43545 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-43546 https://bugzilla.mozilla.org/show_bug.cgi?id=1737751 (* Security fix *) xap/vim-gvim-8.2.3754-x86_64-1.txz: Upgraded.
Diffstat (limited to 'source')
-rwxr-xr-xsource/d/Cython/Cython.SlackBuild2
-rwxr-xr-xsource/d/rust/rust.SlackBuild8
-rw-r--r--source/d/rust/rust.url8
-rw-r--r--source/kde/kde/build/kscreen2
-rw-r--r--source/kde/kde/build/libkscreen2
-rw-r--r--source/kde/kde/patch/kscreen.patch1
-rw-r--r--source/kde/kde/patch/kscreen/57.patch189
-rw-r--r--source/kde/kde/patch/libkscreen.patch2
-rw-r--r--source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch240
-rw-r--r--source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch219
-rw-r--r--source/l/vte/vte.url1
-rwxr-xr-xsource/xap/mozilla-firefox/mozilla-firefox.SlackBuild2
12 files changed, 664 insertions, 12 deletions
diff --git a/source/d/Cython/Cython.SlackBuild b/source/d/Cython/Cython.SlackBuild
index 6130e89f4..d2893f072 100755
--- a/source/d/Cython/Cython.SlackBuild
+++ b/source/d/Cython/Cython.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=Cython
VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z | rev | cut -f 3- -d . | cut -f 1 -d - | rev)}
-BUILD=${BUILD:-3}
+BUILD=${BUILD:-1}
if [ -z "$ARCH" ]; then
case "$( uname -m )" in
diff --git a/source/d/rust/rust.SlackBuild b/source/d/rust/rust.SlackBuild
index 4306e3477..0d73d2f4c 100755
--- a/source/d/rust/rust.SlackBuild
+++ b/source/d/rust/rust.SlackBuild
@@ -26,7 +26,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=rust
SRCNAM="${PKGNAM}c"
-VERSION=${VERSION:-1.56.1}
+VERSION=${VERSION:-1.57.0}
BUILD=${BUILD:-1}
# Set this to YES to build with the system LLVM, or NO to use the bundled LLVM.
@@ -34,9 +34,9 @@ BUILD=${BUILD:-1}
SYSTEM_LLVM=${SYSTEM_LLVM:-YES}
# Bootstrap variables (might not be kept updated for latest Rust):
-RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.55.0}
-RSTAGE0_DIR=${RSTAGE0_DIR:-2021-09-09}
-CSTAGE0_VERSION=${CSTAGE0_VERSION:-1.55.0}
+RSTAGE0_VERSION=${RSTAGE0_VERSION:-1.56.1}
+RSTAGE0_DIR=${RSTAGE0_DIR:-2021-11-01}
+CSTAGE0_VERSION=${CSTAGE0_VERSION:-1.56.1}
CSTAGE0_DIR=${CSTAGE0_DIR:-$RSTAGE0_DIR}
# Automatically determine the architecture we're building on:
diff --git a/source/d/rust/rust.url b/source/d/rust/rust.url
index e02ef76df..e4ea90ef3 100644
--- a/source/d/rust/rust.url
+++ b/source/d/rust/rust.url
@@ -1,5 +1,5 @@
# Source code (repacked to .tar.lz):
-VERSION=1.56.1
+VERSION=1.57.0
rm -f rustc-${VERSION}-src.tar.*
lftpget https://static.rust-lang.org/dist/rustc-${VERSION}-src.tar.gz
lftpget https://static.rust-lang.org/dist/rustc-${VERSION}-src.tar.gz.asc
@@ -20,9 +20,9 @@ fi
# update the settings below, look at src/stage0.txt in the Rust sources.
exit 0
-BOOTSTRAP_DATE=2021-09-09
-BOOTSTRAP_CARGO=1.55.0
-BOOTSTRAP_VERSION=1.55.0
+BOOTSTRAP_DATE=2021-11-01
+BOOTSTRAP_CARGO=1.56.1
+BOOTSTRAP_VERSION=1.56.0
# i686 bootstrap:
lftpget https://static.rust-lang.org/dist/${BOOTSTRAP_DATE}/cargo-${BOOTSTRAP_CARGO}-i686-unknown-linux-gnu.tar.xz
diff --git a/source/kde/kde/build/kscreen b/source/kde/kde/build/kscreen
index d00491fd7..0cfbf0888 100644
--- a/source/kde/kde/build/kscreen
+++ b/source/kde/kde/build/kscreen
@@ -1 +1 @@
-1
+2
diff --git a/source/kde/kde/build/libkscreen b/source/kde/kde/build/libkscreen
index d00491fd7..0cfbf0888 100644
--- a/source/kde/kde/build/libkscreen
+++ b/source/kde/kde/build/libkscreen
@@ -1 +1 @@
-1
+2
diff --git a/source/kde/kde/patch/kscreen.patch b/source/kde/kde/patch/kscreen.patch
new file mode 100644
index 000000000..7b0a24332
--- /dev/null
+++ b/source/kde/kde/patch/kscreen.patch
@@ -0,0 +1 @@
+cat $CWD/patch/kscreen/57.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/kscreen/57.patch b/source/kde/kde/patch/kscreen/57.patch
new file mode 100644
index 000000000..bb8befc91
--- /dev/null
+++ b/source/kde/kde/patch/kscreen/57.patch
@@ -0,0 +1,189 @@
+From 4d025b68022405ce889b563ed67646ccbfe4a658 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
+Date: Mon, 29 Nov 2021 17:15:26 +0100
+Subject: [PATCH 1/4] Compute logicalSize taking into account current config
+
+BUG: 441417
+---
+ kcm/output_identifier.cpp | 2 +-
+ kcm/output_model.cpp | 23 +++++++++++++++--------
+ kded/output.cpp | 4 ++--
+ 3 files changed, 18 insertions(+), 11 deletions(-)
+
+diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp
+index a672995..ba51470 100644
+--- a/kcm/output_identifier.cpp
++++ b/kcm/output_identifier.cpp
+@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent)
+ }
+ if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
+ // Scale adjustment is not needed on Wayland, we use logical size.
+- logicalSize = output->logicalSize().toSize();
++ logicalSize = output->explicitLogicalSize().toSize();
+ } else {
+ logicalSize = deviceSize / view->effectiveDevicePixelRatio();
+ }
+diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp
+index a497c90..020b96f 100644
+--- a/kcm/output_model.cpp
++++ b/kcm/output_model.cpp
+@@ -161,10 +161,13 @@ bool OutputModel::setData(const QModelIndex &index, const QVariant &value, int r
+ bool ok;
+ const qreal scale = value.toReal(&ok);
+ if (ok && !qFuzzyCompare(output.ptr->scale(), scale)) {
+- const auto oldSize = output.ptr->logicalSize().toSize();
++ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
++
+ output.ptr->setScale(scale);
+ m_config->setScale(output.ptr, scale);
+- const auto newSize = output.ptr->logicalSize().toSize();
++
++ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
++ output.ptr->setExplicitLogicalSize(newSize);
+
+ maintainSnapping(output, oldSize, newSize);
+
+@@ -385,9 +388,11 @@ bool OutputModel::setResolution(int outputIndex, int resIndex)
+ if (output.ptr->currentModeId() == id) {
+ return false;
+ }
+- const auto oldSize = output.ptr->logicalSize().toSize();
++ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
+ output.ptr->setCurrentModeId(id);
+- const auto newSize = output.ptr->logicalSize().toSize();
++
++ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
++ output.ptr->setExplicitLogicalSize(newSize);
+
+ maintainSnapping(output, oldSize, newSize);
+
+@@ -466,9 +471,11 @@ bool OutputModel::setRotation(int outputIndex, KScreen::Output::Rotation rotatio
+ if (output.ptr->rotation() == rotation) {
+ return false;
+ }
+- const auto oldSize = output.ptr->logicalSize().toSize();
++ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
+ output.ptr->setRotation(rotation);
+- const auto newSize = output.ptr->logicalSize().toSize();
++
++ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
++ output.ptr->setExplicitLogicalSize(newSize);
+
+ maintainSnapping(output, oldSize, newSize);
+
+@@ -653,7 +660,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex)
+ return false;
+ }
+ m_config->setReplicationSource(output.ptr, nullptr);
+- output.ptr->setLogicalSize(QSizeF());
++ output.ptr->setExplicitLogicalSize(QSizeF());
+ resetPosition(output);
+ } else {
+ const auto source = m_outputs[sourceIndex].ptr;
+@@ -664,7 +671,7 @@ bool OutputModel::setReplicationSourceIndex(int outputIndex, int sourceIndex)
+ m_config->setReplicationSource(output.ptr, source);
+ output.posReset = output.ptr->pos();
+ output.ptr->setPos(source->pos());
+- output.ptr->setLogicalSize(source->logicalSize());
++ output.ptr->setExplicitLogicalSize(m_config->config()->logicalSizeForOutput(*source));
+ }
+
+ reposition();
+diff --git a/kded/output.cpp b/kded/output.cpp
+index 7463b8a..44251e5 100644
+--- a/kded/output.cpp
++++ b/kded/output.cpp
+@@ -404,9 +404,9 @@ void Output::readInOutputs(KScreen::ConfigPtr config, const QVariantList &output
+ auto replicationSource = control.getReplicationSource(output);
+ if (replicationSource) {
+ output->setPos(replicationSource->pos());
+- output->setLogicalSize(replicationSource->logicalSize());
++ output->setExplicitLogicalSize(config->logicalSizeForOutput(*replicationSource));
+ } else {
+- output->setLogicalSize(QSizeF());
++ output->setExplicitLogicalSize(QSizeF());
+ }
+ }
+
+--
+GitLab
+
+
+From 3b90217f21e62285e78fff86ae562c692799e28f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
+Date: Tue, 30 Nov 2021 14:58:40 +0100
+Subject: [PATCH 2/4] Update screen size when mode changes
+
+---
+ kcm/output_model.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/kcm/output_model.cpp b/kcm/output_model.cpp
+index 020b96f..ae01307 100644
+--- a/kcm/output_model.cpp
++++ b/kcm/output_model.cpp
+@@ -390,6 +390,7 @@ bool OutputModel::setResolution(int outputIndex, int resIndex)
+ }
+ const auto oldSize = output.ptr->explicitLogicalSize().toSize();
+ output.ptr->setCurrentModeId(id);
++ output.ptr->setSize(output.ptr->currentMode()->size());
+
+ const auto newSize = m_config->config()->logicalSizeForOutput(*output.ptr).toSize();
+ output.ptr->setExplicitLogicalSize(newSize);
+--
+GitLab
+
+
+From ad8d66c2c39c15a9fd668a0a292f4cd970731123 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
+Date: Wed, 1 Dec 2021 13:39:21 +0100
+Subject: [PATCH 3/4] Ensure to set outputs explicitLogicalSize upon loading
+ config
+
+---
+ kcm/config_handler.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/kcm/config_handler.cpp b/kcm/config_handler.cpp
+index d7e7c7c..dabbcb2 100644
+--- a/kcm/config_handler.cpp
++++ b/kcm/config_handler.cpp
+@@ -78,6 +78,8 @@ void ConfigHandler::resetScale(const KScreen::OutputPtr &output)
+
+ void ConfigHandler::initOutput(const KScreen::OutputPtr &output)
+ {
++ output->setExplicitLogicalSize(config()->logicalSizeForOutput(*output));
++
+ if (output->isConnected()) {
+ resetScale(output);
+ m_outputs->add(output);
+--
+GitLab
+
+
+From ad7dda0b64c6f76066cdd199b0aa6ed2e2982f88 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
+Date: Wed, 1 Dec 2021 14:40:32 +0100
+Subject: [PATCH 4/4] Fix output identifier window positioning in wayland with
+ some scale
+
+---
+ kcm/output_identifier.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/kcm/output_identifier.cpp b/kcm/output_identifier.cpp
+index ba51470..d21d36f 100644
+--- a/kcm/output_identifier.cpp
++++ b/kcm/output_identifier.cpp
+@@ -56,7 +56,7 @@ OutputIdentifier::OutputIdentifier(KScreen::ConfigPtr config, QObject *parent)
+ }
+ if (config->supportedFeatures() & KScreen::Config::Feature::PerOutputScaling) {
+ // Scale adjustment is not needed on Wayland, we use logical size.
+- logicalSize = output->explicitLogicalSize().toSize();
++ logicalSize = config->logicalSizeForOutput(*output.data()).toSize();
+ } else {
+ logicalSize = deviceSize / view->effectiveDevicePixelRatio();
+ }
+--
+GitLab
+
diff --git a/source/kde/kde/patch/libkscreen.patch b/source/kde/kde/patch/libkscreen.patch
new file mode 100644
index 000000000..13980ceb2
--- /dev/null
+++ b/source/kde/kde/patch/libkscreen.patch
@@ -0,0 +1,2 @@
+cat $CWD/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+cat $CWD/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch b/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch
new file mode 100644
index 000000000..b0e5e7136
--- /dev/null
+++ b/source/kde/kde/patch/libkscreen/7eb0390bf70fc7fb5a39bd501ffcc327a07c328a.patch
@@ -0,0 +1,240 @@
+From 7eb0390bf70fc7fb5a39bd501ffcc327a07c328a Mon Sep 17 00:00:00 2001
+From: Ilya Pominov <ipominov@astralinux.ru>
+Date: Thu, 23 Sep 2021 14:24:16 +0300
+Subject: [PATCH] XrandR: Fix impossibilty to change resolution in VirtualBox
+
+In VirtualBox KDE runs at low resolution,
+and when you try to change the resolution through the "Screen Settings"
+it returns to the original one again.
+How to check:
+- run KDE neon on VirtualBox
+- change the resolution
+
+VirtualBox sets the hotplug_mode_update property, but its preferred mode
+is always 800x600, and KScreen returns the resolution to 800x600.
+
+Now XRandRCrtc stores the timestamp of the last resolution change
+request from backend, and the timestamp of the last config update from
+X11.
+If the changes were initiated by XRandR backend (i.e. 'timestamp of the
+last config update from X11' less or equal 'last resolution change
+request'), then the followPreferedMode flag in KScreenConfig is set to
+false.
+
+BUG: 407058
+---
+ backends/xcbeventlistener.cpp | 7 ++++++-
+ backends/xcbeventlistener.h | 2 +-
+ backends/xrandr/xrandr.cpp | 4 +++-
+ backends/xrandr/xrandr.h | 2 +-
+ backends/xrandr/xrandrconfig.cpp | 9 +++++++--
+ backends/xrandr/xrandrcrtc.cpp | 23 +++++++++++++++++++++++
+ backends/xrandr/xrandrcrtc.h | 7 +++++++
+ backends/xrandr/xrandroutput.cpp | 2 +-
+ 8 files changed, 49 insertions(+), 7 deletions(-)
+
+diff --git a/backends/xcbeventlistener.cpp b/backends/xcbeventlistener.cpp
+index dba81dc..4c3a527 100644
+--- a/backends/xcbeventlistener.cpp
++++ b/backends/xcbeventlistener.cpp
+@@ -139,6 +139,8 @@ void XCBEventListener::handleScreenChange(xcb_generic_event_t *e)
+ }
+
+ qCDebug(KSCREEN_XCB_HELPER) << "RRScreenChangeNotify";
++ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << e2->timestamp;
++ qCDebug(KSCREEN_XCB_HELPER) << "\tConfig_timestamp: " << e2->config_timestamp;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tWindow:" << e2->request_window;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tRoot:" << e2->root;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)e2->rotation);
+@@ -157,15 +159,17 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e)
+ if (randrEvent->subCode == XCB_RANDR_NOTIFY_CRTC_CHANGE) {
+ xcb_randr_crtc_change_t crtc = randrEvent->u.cc;
+ qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_CrtcChange";
++ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << crtc.timestamp;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << crtc.crtc;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << crtc.mode;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tRotation: " << rotationToString((xcb_randr_rotation_t)crtc.rotation);
+ qCDebug(KSCREEN_XCB_HELPER) << "\tGeometry: " << crtc.x << crtc.y << crtc.width << crtc.height;
+- Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height));
++ Q_EMIT crtcChanged(crtc.crtc, crtc.mode, (xcb_randr_rotation_t)crtc.rotation, QRect(crtc.x, crtc.y, crtc.width, crtc.height), crtc.timestamp);
+
+ } else if (randrEvent->subCode == XCB_RANDR_NOTIFY_OUTPUT_CHANGE) {
+ xcb_randr_output_change_t output = randrEvent->u.oc;
+ qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputChange";
++ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << output.timestamp;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << output.output;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tCRTC: " << output.crtc;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tMode: " << output.mode;
+@@ -181,6 +185,7 @@ void XCBEventListener::handleXRandRNotify(xcb_generic_event_t *e)
+ xcb_get_atom_name_reply(QX11Info::connection(), xcb_get_atom_name(QX11Info::connection(), property.atom), nullptr));
+
+ qCDebug(KSCREEN_XCB_HELPER) << "RRNotify_OutputProperty (ignored)";
++ qCDebug(KSCREEN_XCB_HELPER) << "\tTimestamp: " << property.timestamp;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tOutput: " << property.output;
+ qCDebug(KSCREEN_XCB_HELPER) << "\tProperty: " << xcb_get_atom_name_name(reply.data());
+ qCDebug(KSCREEN_XCB_HELPER) << "\tState (newValue, Deleted): " << property.status;
+diff --git a/backends/xcbeventlistener.h b/backends/xcbeventlistener.h
+index 35577d9..68136d8 100644
+--- a/backends/xcbeventlistener.h
++++ b/backends/xcbeventlistener.h
+@@ -30,7 +30,7 @@ Q_SIGNALS:
+ void outputsChanged();
+
+ /* Emitted only when XRandR 1.2 or newer is available */
+- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
++ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp);
+ void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection);
+ void outputPropertyChanged(xcb_randr_output_t output);
+
+diff --git a/backends/xrandr/xrandr.cpp b/backends/xrandr/xrandr.cpp
+index 71cbd77..115f268 100644
+--- a/backends/xrandr/xrandr.cpp
++++ b/backends/xrandr/xrandr.cpp
+@@ -45,6 +45,7 @@ XRandR::XRandR()
+ qRegisterMetaType<xcb_randr_mode_t>("xcb_randr_mode_t");
+ qRegisterMetaType<xcb_randr_connection_t>("xcb_randr_connection_t");
+ qRegisterMetaType<xcb_randr_rotation_t>("xcb_randr_rotation_t");
++ qRegisterMetaType<xcb_timestamp_t>("xcb_timestamp_t");
+
+ // Use our own connection to make sure that we won't mess up Qt's connection
+ // if something goes wrong on our side.
+@@ -143,7 +144,7 @@ void XRandR::outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb
+ qCDebug(KSCREEN_XRANDR) << "Output" << xOutput->id() << ": connected =" << xOutput->isConnected() << ", enabled =" << xOutput->isEnabled();
+ }
+
+-void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom)
++void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp)
+ {
+ XRandRCrtc *xCrtc = s_internalConfig->crtc(crtc);
+ if (!xCrtc) {
+@@ -152,6 +153,7 @@ void XRandR::crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr
+ xCrtc->update(mode, rotation, geom);
+ }
+
++ xCrtc->updateConfigTimestamp(timestamp);
+ m_configChangeCompressor->start();
+ }
+
+diff --git a/backends/xrandr/xrandr.h b/backends/xrandr/xrandr.h
+index 91dd7aa..6b998c8 100644
+--- a/backends/xrandr/xrandr.h
++++ b/backends/xrandr/xrandr.h
+@@ -44,7 +44,7 @@ public:
+
+ private:
+ void outputChanged(xcb_randr_output_t output, xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_connection_t connection);
+- void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
++ void crtcChanged(xcb_randr_crtc_t crtc, xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, const QRect &geom, xcb_timestamp_t timestamp);
+ void screenChanged(xcb_randr_rotation_t rotation, const QSize &sizePx, const QSize &sizeMm);
+
+ static quint8 *getXProperty(xcb_randr_output_t output, xcb_atom_t atom, size_t &len);
+diff --git a/backends/xrandr/xrandrconfig.cpp b/backends/xrandr/xrandrconfig.cpp
+index fa0929c..5cbf4c7 100644
+--- a/backends/xrandr/xrandrconfig.cpp
++++ b/backends/xrandr/xrandrconfig.cpp
+@@ -504,6 +504,8 @@ bool XRandRConfig::disableOutput(const OutputPtr &kscreenOutput) const
+ XCB_NONE,
+ xOutput->isConnected() ? XCB_RANDR_CONNECTION_CONNECTED : XCB_RANDR_CONNECTION_DISCONNECTED,
+ kscreenOutput->isPrimary());
++ if (xOutput->crtc())
++ xOutput->crtc()->updateTimestamp(reply->timestamp);
+ }
+ return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS);
+ }
+@@ -573,7 +575,7 @@ bool XRandRConfig::changeOutput(const KScreen::OutputPtr &kscreenOutput) const
+ << "\n"
+ << "\tCRTC:" << xOutput->crtc()->crtc() << "\n"
+ << "\tPos:" << kscreenOutput->pos() << "\n"
+- << "\tMode:" << modeId << kscreenOutput->currentMode() << "\n"
++ << "\tMode:" << kscreenOutput->currentMode() << "Preferred:" << kscreenOutput->preferredModeId() << "\n"
+ << "\tRotation:" << kscreenOutput->rotation();
+
+ if (!sendConfig(kscreenOutput, xOutput->crtc())) {
+@@ -605,6 +607,9 @@ bool XRandRConfig::sendConfig(const KScreen::OutputPtr &kscreenOutput, XRandRCrt
+ qCDebug(KSCREEN_XRANDR) << "\tResult: unknown (error)";
+ return false;
+ }
+- qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status;
++
++ crtc->updateTimestamp(reply->timestamp);
++
++ qCDebug(KSCREEN_XRANDR) << "\tResult: " << reply->status << " timestamp: " << reply->timestamp;
+ return (reply->status == XCB_RANDR_SET_CONFIG_SUCCESS);
+ }
+diff --git a/backends/xrandr/xrandrcrtc.cpp b/backends/xrandr/xrandrcrtc.cpp
+index c3cd291..9209501 100644
+--- a/backends/xrandr/xrandrcrtc.cpp
++++ b/backends/xrandr/xrandrcrtc.cpp
+@@ -16,6 +16,8 @@ XRandRCrtc::XRandRCrtc(xcb_randr_crtc_t crtc, XRandRConfig *config)
+ , m_crtc(crtc)
+ , m_mode(0)
+ , m_rotation(XCB_RANDR_ROTATION_ROTATE_0)
++ , m_timestamp(XCB_CURRENT_TIME)
++ , m_configTimestamp(XCB_CURRENT_TIME)
+ {
+ update();
+ }
+@@ -111,3 +113,24 @@ void XRandRCrtc::update(xcb_randr_mode_t mode, xcb_randr_rotation_t rotation, co
+ m_geometry = geom;
+ m_rotation = rotation;
+ }
++
++void XRandRCrtc::updateTimestamp(const xcb_timestamp_t tmstamp)
++{
++ if (tmstamp > m_timestamp) {
++ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_timestamp update " << m_timestamp << " => " << tmstamp;
++ m_timestamp = tmstamp;
++ }
++}
++
++void XRandRCrtc::updateConfigTimestamp(const xcb_timestamp_t tmstamp)
++{
++ if (tmstamp > m_configTimestamp) {
++ qCDebug(KSCREEN_XRANDR) << "XRandRCrtc " << m_crtc << " m_configTimestamp update" << m_configTimestamp << " => " << tmstamp;
++ m_configTimestamp = tmstamp;
++ }
++}
++
++bool XRandRCrtc::isChangedFromOutside() const
++{
++ return m_configTimestamp > m_timestamp;
++}
+diff --git a/backends/xrandr/xrandrcrtc.h b/backends/xrandr/xrandrcrtc.h
+index 4de4a09..8be23d2 100644
+--- a/backends/xrandr/xrandrcrtc.h
++++ b/backends/xrandr/xrandrcrtc.h
+@@ -41,6 +41,10 @@ public:
+ void update();
+ void update(xcb_randr_crtc_t mode, xcb_randr_rotation_t rotation, const QRect &geom);
+
++ void updateTimestamp(const xcb_timestamp_t tmstamp);
++ void updateConfigTimestamp(const xcb_timestamp_t tmstamp);
++ bool isChangedFromOutside() const;
++
+ private:
+ xcb_randr_crtc_t m_crtc;
+ xcb_randr_mode_t m_mode;
+@@ -50,4 +54,7 @@ private:
+
+ QVector<xcb_randr_output_t> m_possibleOutputs;
+ QVector<xcb_randr_output_t> m_outputs;
++
++ xcb_timestamp_t m_timestamp;
++ xcb_timestamp_t m_configTimestamp;
+ };
+diff --git a/backends/xrandr/xrandroutput.cpp b/backends/xrandr/xrandroutput.cpp
+index 92a39cf..4aa2290 100644
+--- a/backends/xrandr/xrandroutput.cpp
++++ b/backends/xrandr/xrandroutput.cpp
+@@ -403,7 +403,7 @@ KScreen::OutputPtr XRandROutput::toKScreenOutput() const
+
+ // See https://bugzilla.redhat.com/show_bug.cgi?id=1290586
+ // QXL will be creating a new mode we need to jump to every time the display is resized
+- kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate);
++ kscreenOutput->setFollowPreferredMode(m_hotplugModeUpdate && m_crtc && m_crtc->isChangedFromOutside());
+
+ kscreenOutput->setConnected(isConnected());
+ if (isConnected()) {
+--
+GitLab
+
diff --git a/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch b/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch
new file mode 100644
index 000000000..38e932be9
--- /dev/null
+++ b/source/kde/kde/patch/libkscreen/cf0921f3fbde31cb94b9ccddcaba36da3a488483.patch
@@ -0,0 +1,219 @@
+From cf0921f3fbde31cb94b9ccddcaba36da3a488483 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven29@gmail.com>
+Date: Thu, 2 Dec 2021 16:04:20 +0000
+Subject: [PATCH] Under X11 ignore per-screen scale to compute logicalSize
+
+---
+ src/config.cpp | 32 ++++++++++++++++++++++++++++++++
+ src/config.h | 4 ++++
+ src/output.cpp | 39 +++++++++------------------------------
+ src/output.h | 18 ++++--------------
+ 4 files changed, 49 insertions(+), 44 deletions(-)
+ mode change 100644 => 100755 src/output.h
+
+diff --git a/src/config.cpp b/src/config.cpp
+index 37e1038..41abf70 100644
+--- a/src/config.cpp
++++ b/src/config.cpp
+@@ -325,6 +325,7 @@ void Config::setPrimaryOutput(const OutputPtr &newPrimary)
+ void Config::addOutput(const OutputPtr &output)
+ {
+ d->outputs.insert(output->id(), output);
++ output->setExplicitLogicalSize(logicalSizeForOutput(*output));
+ connect(output.data(), &KScreen::Output::isPrimaryChanged, d, &KScreen::Config::Private::onPrimaryOutputChanged);
+
+ Q_EMIT outputAdded(output);
+@@ -391,6 +392,37 @@ void Config::apply(const ConfigPtr &other)
+ setValid(other->isValid());
+ }
+
++QRect Config::outputGeometryForOutput(const KScreen::Output &output) const
++{
++ QSize size = logicalSizeForOutput(output).toSize();
++ if (!size.isValid()) {
++ return QRect();
++ }
++
++ return QRect(output.pos(), size);
++}
++
++QSizeF Config::logicalSizeForOutput(const KScreen::Output &output) const
++{
++ QSizeF size = output.enforcedModeSize();
++ if (!size.isValid()) {
++ return QSizeF();
++ }
++ // ignore scale where scaling is not per-output
++ if (supportedFeatures().testFlag(Feature::PerOutputScaling)) {
++ size = size / output.scale();
++ }
++
++ // We can't use output.size(), because it does not reflect the actual rotation() set by caller.
++ // It is only updated when we get update from KScreen, but not when user changes mode or
++ // rotation manually.
++
++ if (!output.isHorizontal()) {
++ size = size.transposed();
++ }
++ return size;
++}
++
+ QDebug operator<<(QDebug dbg, const KScreen::ConfigPtr &config)
+ {
+ if (config) {
+diff --git a/src/config.h b/src/config.h
+index 551d7d0..4629dab 100644
+--- a/src/config.h
++++ b/src/config.h
+@@ -190,6 +190,10 @@ public:
+ */
+ void setTabletModeEngaged(bool engaged);
+
++ QRect outputGeometryForOutput(const KScreen::Output &output) const;
++
++ QSizeF logicalSizeForOutput(const KScreen::Output &output) const;
++
+ Q_SIGNALS:
+ void outputAdded(const KScreen::OutputPtr &output);
+ void outputRemoved(int outputId);
+diff --git a/src/output.cpp b/src/output.cpp
+index c7f5949..a0fae28 100644
+--- a/src/output.cpp
++++ b/src/output.cpp
+@@ -13,6 +13,7 @@
+ #include "mode.h"
+
+ #include <QCryptographicHash>
++#include <QGuiApplication>
+ #include <QRect>
+ #include <QScopedPointer>
+ #include <QStringList>
+@@ -28,7 +29,7 @@ public:
+ , replicationSource(0)
+ , rotation(None)
+ , scale(1.0)
+- , logicalSize(QSizeF())
++ , explicitLogicalSize(QSizeF())
+ , connected(false)
+ , enabled(false)
+ , primary(false)
+@@ -87,7 +88,7 @@ public:
+ QSize size;
+ Rotation rotation;
+ qreal scale;
+- QSizeF logicalSize;
++ QSizeF explicitLogicalSize;
+ bool connected;
+ bool enabled;
+ bool primary;
+@@ -459,40 +460,18 @@ void Output::setScale(qreal factor)
+ Q_EMIT scaleChanged();
+ }
+
+-QSizeF Output::logicalSize() const
+-{
+- if (d->logicalSize.isValid()) {
+- return d->logicalSize;
+- }
+-
+- QSizeF size = enforcedModeSize();
+- if (!size.isValid()) {
+- return QSizeF();
+- }
+- size = size / d->scale;
+-
+- // We can't use d->size, because d->size does not reflect the actual rotation() set by caller.
+- // It is only updated when we get update from KScreen, but not when user changes mode or
+- // rotation manually.
+-
+- if (!isHorizontal()) {
+- size = size.transposed();
+- }
+- return size;
+-}
+-
+ QSizeF Output::explicitLogicalSize() const
+ {
+- return d->logicalSize;
++ return d->explicitLogicalSize;
+ }
+
+-void Output::setLogicalSize(const QSizeF &size)
++void Output::setExplicitLogicalSize(const QSizeF &size)
+ {
+- if (qFuzzyCompare(d->logicalSize.width(), size.width()) && qFuzzyCompare(d->logicalSize.height(), size.height())) {
++ if (qFuzzyCompare(d->explicitLogicalSize.width(), size.width()) && qFuzzyCompare(d->explicitLogicalSize.height(), size.height())) {
+ return;
+ }
+- d->logicalSize = size;
+- Q_EMIT logicalSizeChanged();
++ d->explicitLogicalSize = size;
++ Q_EMIT explicitLogicalSizeChanged();
+ }
+
+ bool Output::isConnected() const
+@@ -628,7 +607,7 @@ QSize Output::enforcedModeSize() const
+
+ QRect Output::geometry() const
+ {
+- QSize size = logicalSize().toSize();
++ QSize size = explicitLogicalSize().toSize();
+ if (!size.isValid()) {
+ return QRect();
+ }
+diff --git a/src/output.h b/src/output.h
+old mode 100644
+new mode 100755
+index 2b23ac4..7edb74c
+--- a/src/output.h
++++ b/src/output.h
+@@ -47,7 +47,7 @@ public:
+ Q_PROPERTY(QSize sizeMm READ sizeMm CONSTANT)
+ Q_PROPERTY(qreal scale READ scale WRITE setScale NOTIFY scaleChanged)
+ Q_PROPERTY(bool followPreferredMode READ followPreferredMode WRITE setFollowPreferredMode NOTIFY followPreferredModeChanged)
+- Q_PROPERTY(QSizeF logicalSize READ logicalSize WRITE setLogicalSize NOTIFY logicalSizeChanged)
++ Q_PROPERTY(QSizeF explicitLogicalSize READ explicitLogicalSize WRITE setExplicitLogicalSize NOTIFY explicitLogicalSizeChanged)
+ Q_PROPERTY(Capabilities capabilities READ capabilities NOTIFY capabilitiesChanged)
+ Q_PROPERTY(uint32_t overscan READ overscan WRITE setOverscan NOTIFY overscanChanged)
+ Q_PROPERTY(VrrPolicy vrrPolicy READ vrrPolicy WRITE setVrrPolicy NOTIFY vrrPolicyChanged)
+@@ -311,16 +311,6 @@ public:
+ */
+ void setScale(qreal factor);
+
+- /**
+- * The logical size is the output's representation internal to the display server and its
+- * overall screen geometry.
+- *
+- * returns the logical size of this output
+- *
+- * @since 5.18
+- */
+- QSizeF logicalSize() const;
+-
+ /**
+ * The logical size is the output's representation internal to the display server and its
+ * overall screen geometry.
+@@ -338,9 +328,9 @@ public:
+ *
+ * @param size of this output in logical space
+ *
+- * @since 5.18
++ * @since 5.24
+ */
+- void setLogicalSize(const QSizeF &size);
++ void setExplicitLogicalSize(const QSizeF &size);
+
+ /**
+ * @returns whether the mode should be changed to the new preferred mode
+@@ -421,7 +411,7 @@ Q_SIGNALS:
+ void clonesChanged();
+ void replicationSourceChanged();
+ void scaleChanged();
+- void logicalSizeChanged();
++ void explicitLogicalSizeChanged();
+ void followPreferredModeChanged(bool followPreferredMode);
+ void capabilitiesChanged();
+ void overscanChanged();
+--
+GitLab
+
diff --git a/source/l/vte/vte.url b/source/l/vte/vte.url
new file mode 100644
index 000000000..b9a7d0ce2
--- /dev/null
+++ b/source/l/vte/vte.url
@@ -0,0 +1 @@
+https://gitlab.gnome.org/GNOME/vte
diff --git a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
index e448ee7a6..6d0682fbc 100755
--- a/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
+++ b/source/xap/mozilla-firefox/mozilla-firefox.SlackBuild
@@ -28,7 +28,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PKGNAM=mozilla-firefox
VERSION=$(basename $(ls firefox-*.tar.?z | cut -d - -f 2 | rev | cut -f 3- -d . | rev) .source)
RELEASEVER=$(echo $VERSION | cut -f 1 -d r | cut -f 1 -d b | cut -f 1 -d e)
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
# Specify this variable for a localized build.
# For example, to build a version of Firefox with Italian support, run