Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libkscreen2 for openSUSE:Factory checked in at 2022-10-11 18:01:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libkscreen2 (Old) and /work/SRC/openSUSE:Factory/.libkscreen2.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libkscreen2" Tue Oct 11 18:01:05 2022 rev:145 rq:1009115 version:5.26.0 Changes: -------- --- /work/SRC/openSUSE:Factory/libkscreen2/libkscreen2.changes 2022-09-08 14:21:02.446291306 +0200 +++ /work/SRC/openSUSE:Factory/.libkscreen2.new.2275/libkscreen2.changes 2022-10-11 18:03:26.185879823 +0200 @@ -1,0 +2,27 @@ +Thu Oct 6 14:48:43 UTC 2022 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to 5.26.0 + * New bugfix release + * For more details please see: + * https://kde.org/announcements/plasma/5/5.26.0 +- No code changes since 5.25.90 + +------------------------------------------------------------------- +Thu Sep 15 20:46:58 UTC 2022 - Fabian Vogt <fab...@ritter-vogt.de> + +- Update to 5.25.90 + * New feature release + * For more details please see: + * https://kde.org/announcements/plasma/5/5.25.90 +- Changes since 5.25.5: + * Update default on XwaylandClientsScale to true + * Add FreeBSD Qt6 CI support + * Add missing license file + * Fix Qt major version in CMake config files + * Disable KF5::WaylandServer based tests for Qt6 build + * Remove duplicate headers between cpp/h + * wayland: Set kwin up for allowing Xwayland clients scale themselves + * fix(randr): screen is dirty when switching display modes + * Remove CI dependency on kwayland-server as that is no longer a thing. + +------------------------------------------------------------------- Old: ---- libkscreen-5.25.5.tar.xz libkscreen-5.25.5.tar.xz.sig New: ---- libkscreen-5.26.0.tar.xz libkscreen-5.26.0.tar.xz.sig ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libkscreen2.spec ++++++ --- /var/tmp/diff_new_pack.R2KN4L/_old 2022-10-11 18:03:26.829880864 +0200 +++ /var/tmp/diff_new_pack.R2KN4L/_new 2022-10-11 18:03:26.837880876 +0200 @@ -19,7 +19,7 @@ %bcond_without released %define lname libKF5Screen7 Name: libkscreen2 -Version: 5.25.5 +Version: 5.26.0 Release: 0 # Full Plasma 5 version (e.g. 5.8.95) %{!?_plasma5_bugfix: %define _plasma5_bugfix %{version}} @@ -29,18 +29,19 @@ License: GPL-2.0-or-later Group: System/GUI/KDE URL: http://www.kde.org -Source: https://download.kde.org/stable/plasma/%{version}/libkscreen-%{version}.tar.xz +Source: libkscreen-%{version}.tar.xz %if %{with released} -Source1: https://download.kde.org/stable/plasma/%{version}/libkscreen-%{version}.tar.xz.sig +Source1: libkscreen-%{version}.tar.xz.sig Source2: plasma.keyring %endif BuildRequires: cmake >= 3.16 -BuildRequires: extra-cmake-modules +BuildRequires: extra-cmake-modules >= 5.98.0 BuildRequires: fdupes BuildRequires: kf5-filesystem +BuildRequires: cmake(KF5Config) BuildRequires: cmake(KF5Wayland) BuildRequires: cmake(PlasmaWaylandProtocols) -BuildRequires: cmake(Qt5Core) >= 5.11.0 +BuildRequires: cmake(Qt5Core) >= 5.15.0 BuildRequires: cmake(Qt5DBus) BuildRequires: cmake(Qt5Gui) BuildRequires: cmake(Qt5Test) @@ -64,7 +65,7 @@ Summary: KDE's screen management library (development package) Group: Development/Libraries/C and C++ Requires: %{lname} = %{version} -Requires: cmake(Qt5Core) >= 5.11.0 +Requires: cmake(Qt5Core) %description devel Development files belonging to libkscreen, dynamic display management in KDE ++++++ libkscreen-5.25.5.tar.xz -> libkscreen-5.26.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/.gitlab-ci.yml new/libkscreen-5.26.0/.gitlab-ci.yml --- old/libkscreen-5.25.5/.gitlab-ci.yml 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/.gitlab-ci.yml 2022-10-06 14:24:23.000000000 +0200 @@ -4,3 +4,5 @@ include: - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux.yml - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/linux-qt6.yml + - https://invent.kde.org/sysadmin/ci-utilities/raw/master/gitlab-templates/freebsd-qt6.yml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/.kde-ci.yml new/libkscreen-5.26.0/.kde-ci.yml --- old/libkscreen-5.25.5/.kde-ci.yml 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/.kde-ci.yml 2022-10-06 14:24:23.000000000 +0200 @@ -6,3 +6,4 @@ 'require': 'frameworks/extra-cmake-modules': '@latest' 'frameworks/kwayland': '@latest' + 'frameworks/kconfig': '@latest' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/CMakeLists.txt new/libkscreen-5.26.0/CMakeLists.txt --- old/libkscreen-5.25.5/CMakeLists.txt 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/CMakeLists.txt 2022-10-06 14:24:23.000000000 +0200 @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) project(libkscreen) -set(PROJECT_VERSION "5.25.5") +set(PROJECT_VERSION "5.26.0") set(QT_MIN_VERSION "5.15.2") -set(KF5_MIN_VERSION "5.94") +set(KF5_MIN_VERSION "5.98.0") set(KDE_COMPILERSETTINGS_LEVEL "5.82") set(CMAKE_CXX_STANDARD 17) @@ -36,14 +36,11 @@ # Wayland backend find_package(KF5Wayland ${KF5_MIN_VERSION} CONFIG REQUIRED) add_feature_info("KF5Wayland" KF5Wayland_FOUND "Required for building libkscreen's KWayland backend") +find_package(KF5Config ${KF5_MIN_VERSION} CONFIG REQUIRED) find_package(PlasmaWaylandProtocols 1.6.0 CONFIG) set_package_properties(PlasmaWaylandProtocols PROPERTIES TYPE REQUIRED) -# Wayland backend -find_package(KF5Wayland ${KF5_MIN_VERSION} CONFIG REQUIRED) -add_feature_info("KF5Wayland" KF5Wayland_FOUND "Required for building libkscreen's KWayland backend") - find_package(Wayland 1.15 COMPONENTS Client) set_package_properties(Wayland PROPERTIES TYPE REQUIRED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/KF5ScreenConfig.cmake.in new/libkscreen-5.26.0/KF5ScreenConfig.cmake.in --- old/libkscreen-5.25.5/KF5ScreenConfig.cmake.in 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/KF5ScreenConfig.cmake.in 2022-10-06 14:24:23.000000000 +0200 @@ -1,8 +1,8 @@ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) -find_dependency(Qt5Core @QT_MIN_VERSION@) -find_dependency(Qt5Gui @QT_MIN_VERSION@) +find_dependency(Qt@QT_MAJOR_VERSION@Core @QT_MIN_VERSION@) +find_dependency(Qt@QT_MAJOR_VERSION@Gui @QT_MIN_VERSION@) include("${CMAKE_CURRENT_LIST_DIR}/KF5ScreenTargets.cmake") @PACKAGE_INCLUDE_QCHTARGETS@ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/LICENSES/CC0-1.0.txt new/libkscreen-5.26.0/LICENSES/CC0-1.0.txt --- old/libkscreen-5.25.5/LICENSES/CC0-1.0.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/libkscreen-5.26.0/LICENSES/CC0-1.0.txt 2022-10-06 14:24:23.000000000 +0200 @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/autotests/CMakeLists.txt new/libkscreen-5.26.0/autotests/CMakeLists.txt --- old/libkscreen-5.25.5/autotests/CMakeLists.txt 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/autotests/CMakeLists.txt 2022-10-06 14:24:23.000000000 +0200 @@ -25,6 +25,11 @@ kscreen_add_test(testmodelistchange) kscreen_add_test(testedid) +if (NOT TARGET KF5::WaylandServer) + message(WARNING "Skipping KF5::WaylandServer based unit tests!") + return() +endif() + set(KSCREEN_WAYLAND_LIBS KF5::WaylandServer KF5::WaylandClient ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/kwayland/CMakeLists.txt new/libkscreen-5.26.0/backends/kwayland/CMakeLists.txt --- old/libkscreen-5.25.5/backends/kwayland/CMakeLists.txt 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/kwayland/CMakeLists.txt 2022-10-06 14:24:23.000000000 +0200 @@ -47,6 +47,7 @@ target_link_libraries(KSC_KWayland Qt::Core Qt::DBus Qt::Gui + KF5::ConfigCore KF5::Screen KF5::WaylandClient Wayland::Client diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/kwayland/waylandbackend.cpp new/libkscreen-5.26.0/backends/kwayland/waylandbackend.cpp --- old/libkscreen-5.25.5/backends/kwayland/waylandbackend.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/kwayland/waylandbackend.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -16,9 +16,13 @@ #include <configmonitor.h> #include <mode.h> +#include <QProcess> #include <QSettings> #include <QStandardPaths> +#include <KConfig> +#include <KConfigGroup> + using namespace KScreen; WaylandBackend::WaylandBackend() @@ -28,7 +32,31 @@ qCDebug(KSCREEN_WAYLAND) << "Loading Wayland backend."; connect(m_internalConfig, &WaylandConfig::configChanged, this, [this]() { - Q_EMIT configChanged(m_internalConfig->currentConfig()); + const auto newConfig = m_internalConfig->currentConfig(); + + KConfig cfg(QStringLiteral("kdeglobals")); + + KConfigGroup kscreenGroup = cfg.group("KScreen"); + const bool xwaylandClientsScale = kscreenGroup.readEntry("XwaylandClientsScale", true); + + KConfig kwinCfg(QStringLiteral("kwinrc")); + KConfigGroup xwaylandGroup = kwinCfg.group("Xwayland"); + if (xwaylandClientsScale) { + qreal scaleFactor = 1; + const auto outputs = newConfig->outputs(); + for (auto output : outputs) { + scaleFactor = std::max(scaleFactor, output->scale()); + } + + xwaylandGroup.writeEntry("Scale", scaleFactor, KConfig::Notify); + + } else { + xwaylandGroup.deleteEntry("Scale", KConfig::Notify); + } + // here we rerun the fonts kcm init that does the appropriate xrdb call with the new settings + QProcess::startDetached("kcminit", {"kcm_fonts"}); + + Q_EMIT configChanged(newConfig); }); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/kwayland/waylandconfig.cpp new/libkscreen-5.26.0/backends/kwayland/waylandconfig.cpp --- old/libkscreen-5.25.5/backends/kwayland/waylandconfig.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/kwayland/waylandconfig.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -242,7 +242,7 @@ m_kscreenConfig->setScreen(m_screen->toKScreenScreen(m_kscreenConfig)); const auto features = Config::Feature::Writable | Config::Feature::PerOutputScaling | Config::Feature::AutoRotation | Config::Feature::TabletMode - | Config::Feature::PrimaryDisplay | Config::Feature::SynchronousOutputChanges; + | Config::Feature::PrimaryDisplay | Config::Feature::XwaylandScales | Config::Feature::SynchronousOutputChanges; m_kscreenConfig->setSupportedFeatures(features); m_kscreenConfig->setValid(m_connection->display()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/qscreen/qscreenconfig.cpp new/libkscreen-5.26.0/backends/qscreen/qscreenconfig.cpp --- old/libkscreen-5.25.5/backends/qscreen/qscreenconfig.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/qscreen/qscreenconfig.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -13,7 +13,6 @@ #include <QGuiApplication> #include <QRect> -#include <QScreen> using namespace KScreen; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/qscreen/qscreenoutput.cpp new/libkscreen-5.26.0/backends/qscreen/qscreenoutput.cpp --- old/libkscreen-5.25.5/backends/qscreen/qscreenoutput.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/qscreen/qscreenoutput.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -11,7 +11,6 @@ #include <mode.h> #include <QGuiApplication> -#include <QScreen> using namespace KScreen; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/qscreen/qscreenscreen.cpp new/libkscreen-5.26.0/backends/qscreen/qscreenscreen.cpp --- old/libkscreen-5.25.5/backends/qscreen/qscreenscreen.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/qscreen/qscreenscreen.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -13,7 +13,6 @@ #include <mode.h> #include <QGuiApplication> -#include <QScreen> using namespace KScreen; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/xcbeventlistener.cpp new/libkscreen-5.26.0/backends/xcbeventlistener.cpp --- old/libkscreen-5.25.5/backends/xcbeventlistener.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/xcbeventlistener.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -13,8 +13,6 @@ #include <QX11Info> #endif -#include <QRect> - Q_LOGGING_CATEGORY(KSCREEN_XCB_HELPER, "kscreen.xcb.helper") XCBEventListener::XCBEventListener() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/xrandr/xrandr.cpp new/libkscreen-5.26.0/backends/xrandr/xrandr.cpp --- old/libkscreen-5.25.5/backends/xrandr/xrandr.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/xrandr/xrandr.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -7,7 +7,6 @@ #include "xrandr.h" #include "../xcbeventlistener.h" -#include "../xcbwrapper.h" #include "xrandrconfig.h" #include "xrandrscreen.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/xrandr/xrandrconfig.cpp new/libkscreen-5.26.0/backends/xrandr/xrandrconfig.cpp --- old/libkscreen-5.25.5/backends/xrandr/xrandrconfig.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/xrandr/xrandrconfig.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -8,10 +8,7 @@ #include "config.h" #include "edid.h" #include "output.h" -#include "xrandr.h" -#include "xrandrcrtc.h" #include "xrandrmode.h" -#include "xrandroutput.h" #include "xrandrscreen.h" #include "../xcbwrapper.h" @@ -122,16 +119,11 @@ const QSize newScreenSize = screenSize(config); const QSize currentScreenSize = m_screen->currentSize(); - // When the current screen configuration is bigger than the new size (like - // when rotating an output), the XSetScreenSize can fail or apply the smaller - // size only partially, because we apply the size (we have to) before the - // output changes. To prevent all kinds of weird screen sizes from happening, - // we initially set such screen size, that it can take the current as well - // as the new configuration, then we apply the output changes, and finally then - // (if necessary) we reduce the screen size to fix the new configuration precisely. - const QSize intermediateScreenSize = - QSize(qMax(newScreenSize.width(), currentScreenSize.width()), qMax(newScreenSize.height(), currentScreenSize.height())); - + // Previously we initially set such screen size, that it can take the current + // as well as the new configuration, then we apply the output changes, + // and finally then (if necessary) we reduce the screen size to + // fix the new configuration precisely.Now we initially disable the output, + // then set the target screen size, and finally we apply the output changes. int neededCrtcs = 0; xcb_randr_output_t primaryOutput = 0; xcb_randr_output_t oldPrimaryOutput = 0; @@ -242,7 +234,6 @@ qCDebug(KSCREEN_XRANDR) << "\tChange Screen Size:" << (newScreenSize != currentScreenSize); if (newScreenSize != currentScreenSize) { qCDebug(KSCREEN_XRANDR) << "\t\tOld:" << currentScreenSize << "\n" - << "\t\tIntermediate:" << intermediateScreenSize << "\n" << "\t\tNew:" << newScreenSize; } @@ -277,24 +268,14 @@ disableOutput(output); } - if (intermediateScreenSize != currentScreenSize) { - setScreenSize(intermediateScreenSize); + if (currentScreenSize != newScreenSize) { + for (const KScreen::OutputPtr &output : toChange) { + disableOutput(output); + } } bool forceScreenSizeUpdate = false; - for (const KScreen::OutputPtr &output : toChange) { - if (!changeOutput(output)) { - /* If we disabled the output before changing it and XRandR failed - * to re-enable it, then update screen size too */ - if (toDisable.contains(output->id())) { - output->setEnabled(false); - qCDebug(KSCREEN_XRANDR) << "Output failed to change: " << output->name(); - forceScreenSizeUpdate = true; - } - } - } - for (const KScreen::OutputPtr &output : toEnable) { if (!enableOutput(output)) { qCDebug(KSCREEN_XRANDR) << "Output failed to be Enabled: " << output->name(); @@ -306,7 +287,7 @@ setPrimaryOutput(primaryOutput); } - if (forceScreenSizeUpdate || intermediateScreenSize != newScreenSize) { + if (forceScreenSizeUpdate || currentScreenSize != newScreenSize) { QSize newSize = newScreenSize; if (forceScreenSizeUpdate) { newSize = screenSize(config); @@ -314,6 +295,18 @@ } setScreenSize(newSize); } + + for (const KScreen::OutputPtr &output : toChange) { + if (!changeOutput(output)) { + /* If we disabled the output before changing it and XRandR failed + * to re-enable it, then update screen size too */ + if (toDisable.contains(output->id())) { + output->setEnabled(false); + qCDebug(KSCREEN_XRANDR) << "Output failed to change: " << output->name(); + } + } + } + } void XRandRConfig::printConfig(const ConfigPtr &config) const diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/backends/xrandr/xrandroutput.cpp new/libkscreen-5.26.0/backends/xrandr/xrandroutput.cpp --- old/libkscreen-5.25.5/backends/xrandr/xrandroutput.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/backends/xrandr/xrandroutput.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -10,7 +10,6 @@ #include "config.h" #include "xrandr.h" #include "xrandrconfig.h" -#include "xrandrmode.h" #include <xcb/render.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/src/config.cpp new/libkscreen-5.26.0/src/config.cpp --- old/libkscreen-5.25.5/src/config.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/src/config.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -9,7 +9,6 @@ #include "abstractbackend.h" #include "backendmanager_p.h" #include "kscreen_debug.h" -#include "output.h" #include <QCryptographicHash> #include <QDebug> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/src/config.h new/libkscreen-5.26.0/src/config.h --- old/libkscreen-5.25.5/src/config.h 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/src/config.h 2022-10-06 14:24:23.000000000 +0200 @@ -42,6 +42,7 @@ None = 0x0, RequireAtLeastOneEnabledScreen = 0x1, }; + Q_ENUM(ValidityFlag) Q_DECLARE_FLAGS(ValidityFlags, ValidityFlag) /** This indicates which features the used backend supports. @@ -58,7 +59,9 @@ AutoRotation = 1 << 4, ///< The backend supports automatic rotation of outputs. TabletMode = 1 << 5, ///< The backend supports querying if a device is in tablet mode. SynchronousOutputChanges = 1 << 6, ///< The backend supports blocking until the output setting changes are applied + XwaylandScales = 1 << 7, ///< The backend supports adapting Xwayland clients to a certain scale }; + Q_ENUM(Feature) Q_DECLARE_FLAGS(Features, Feature) /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/src/doctor/doctor.cpp new/libkscreen-5.26.0/src/doctor/doctor.cpp --- old/libkscreen-5.25.5/src/doctor/doctor.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/src/doctor/doctor.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -8,7 +8,6 @@ #include "dpmsclient.h" #include <QCollator> -#include <QCommandLineParser> #include <QCoreApplication> #include <QDateTime> #include <QFile> @@ -21,7 +20,6 @@ #include <QStandardPaths> #include "../backendmanager_p.h" -#include "../config.h" #include "../configoperation.h" #include "../edid.h" #include "../getconfigoperation.h" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/src/doctor/dpmsclient.cpp new/libkscreen-5.26.0/src/doctor/dpmsclient.cpp --- old/libkscreen-5.25.5/src/doctor/dpmsclient.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/src/doctor/dpmsclient.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -8,13 +8,11 @@ #include <QCommandLineParser> #include <QLoggingCategory> -#include <QRect> #include <QStandardPaths> #include <QThread> #include <KWayland/Client/connection_thread.h> #include <KWayland/Client/output.h> -#include <KWayland/Client/registry.h> #include "qwayland-dpms.h" #include <QtWaylandClient/qwaylandclientextension.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/src/output.cpp new/libkscreen-5.26.0/src/output.cpp --- old/libkscreen-5.25.5/src/output.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/src/output.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -10,13 +10,11 @@ #include "backendmanager_p.h" #include "edid.h" #include "kscreen_debug.h" -#include "mode.h" #include <QCryptographicHash> #include <QGuiApplication> #include <QRect> #include <QScopedPointer> -#include <QStringList> using namespace KScreen; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/tests/kwayland/CMakeLists.txt new/libkscreen-5.26.0/tests/kwayland/CMakeLists.txt --- old/libkscreen-5.25.5/tests/kwayland/CMakeLists.txt 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/tests/kwayland/CMakeLists.txt 2022-10-06 14:24:23.000000000 +0200 @@ -1,3 +1,7 @@ +if (NOT TARGET KF5::WaylandServer) + message(WARNING "Skipping KF5::WaylandServer based tests!") + return() +endif() add_definitions(-DTEST_DATA="${CMAKE_SOURCE_DIR}/autotests/configs/") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/tests/kwayland/waylandtestserver.cpp new/libkscreen-5.26.0/tests/kwayland/waylandtestserver.cpp --- old/libkscreen-5.25.5/tests/kwayland/waylandtestserver.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/tests/kwayland/waylandtestserver.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -132,8 +132,8 @@ outputdevice->setGlobalPosition(c->position()); } if (c->scaleChanged()) { - qCDebug(KSCREEN_WAYLAND_TESTSERVER) << "Setting scale:" << c->scale(); - outputdevice->setScale(c->scale()); + qCDebug(KSCREEN_WAYLAND_TESTSERVER) << "Setting scale:" << c->scaleF(); + outputdevice->setScaleF(c->scaleF()); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.25.5/tests/testpnp.cpp new/libkscreen-5.26.0/tests/testpnp.cpp --- old/libkscreen-5.25.5/tests/testpnp.cpp 2022-09-06 14:25:08.000000000 +0200 +++ new/libkscreen-5.26.0/tests/testpnp.cpp 2022-10-06 14:24:23.000000000 +0200 @@ -7,13 +7,11 @@ #include "testpnp.h" -#include "../src/config.h" #include "../src/configmonitor.h" #include "../src/edid.h" #include "../src/getconfigoperation.h" #include "../src/mode.h" #include "../src/output.h" -#include "../src/screen.h" #include <QGuiApplication> #include <QRect>