commit libkscreen2 for openSUSE:Factory
Hello community,
here is the log from the commit of package libkscreen2 for openSUSE:Factory checked in at 2015-05-29 10:19:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libkscreen2 (Old)
and /work/SRC/openSUSE:Factory/.libkscreen2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libkscreen2"
Changes:
--------
--- /work/SRC/openSUSE:Factory/libkscreen2/libkscreen2.changes 2015-05-11 19:30:31.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.libkscreen2.new/libkscreen2.changes 2015-05-29 10:19:09.000000000 +0200
@@ -1,0 +2,8 @@
+Fri May 22 15:29:56 UTC 2015 - hrvoje.senjan@gmail.com
+
+- Update to 5.3.1:
+ * Bugfix release
+ * For more details please see:
+ https://www.kde.org/announcements/plasma-5.3.1.php
+
+-------------------------------------------------------------------
Old:
----
libkscreen-5.3.0.tar.xz
New:
----
libkscreen-5.3.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libkscreen2.spec ++++++
--- /var/tmp/diff_new_pack.d6qTlu/_old 2015-05-29 10:19:10.000000000 +0200
+++ /var/tmp/diff_new_pack.d6qTlu/_new 2015-05-29 10:19:10.000000000 +0200
@@ -19,7 +19,7 @@
%define lname libKF5Screen6
%define plasma_version 5.0.0
Name: libkscreen2
-Version: 5.3.0
+Version: 5.3.1
Release: 0
BuildRequires: cmake >= 2.8.12
BuildRequires: extra-cmake-modules >= 0.0.12
++++++ libkscreen-5.3.0.tar.xz -> libkscreen-5.3.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.3.0/CMakeLists.txt new/libkscreen-5.3.1/CMakeLists.txt
--- old/libkscreen-5.3.0/CMakeLists.txt 2015-04-23 12:04:35.000000000 +0200
+++ new/libkscreen-5.3.1/CMakeLists.txt 2015-05-21 18:59:03.000000000 +0200
@@ -1,5 +1,5 @@
project(libkscreen)
-set(PROJECT_VERSION "5.3.0")
+set(PROJECT_VERSION "5.3.1")
cmake_minimum_required(VERSION 2.8.12)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.3.0/backends/xrandr/xrandrconfig.cpp new/libkscreen-5.3.1/backends/xrandr/xrandrconfig.cpp
--- old/libkscreen-5.3.0/backends/xrandr/xrandrconfig.cpp 2015-04-23 12:04:35.000000000 +0200
+++ new/libkscreen-5.3.1/backends/xrandr/xrandrconfig.cpp 2015-05-21 18:59:03.000000000 +0200
@@ -122,6 +122,15 @@
const KScreen::OutputList kscreenOutputs = config->outputs();
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()));
int neededCrtcs = 0;
xcb_randr_output_t primaryOutput = 0;
xcb_randr_output_t oldPrimaryOutput = 0;
@@ -226,6 +235,7 @@
qCDebug(KSCREEN_XRANDR) << "\tChange Screen Size:" << (newScreenSize != currentScreenSize);
if (newScreenSize != currentScreenSize) {
qCDebug(KSCREEN_XRANDR) << "\t\tOld:" << currentScreenSize;
+ qCDebug(KSCREEN_XRANDR) << "\t\tIntermediate:" << intermediateScreenSize;
qCDebug(KSCREEN_XRANDR) << "\t\tNew:" << newScreenSize;
}
qCDebug(KSCREEN_XRANDR) << "\tDisable outputs:" << !toDisable.isEmpty();
@@ -257,8 +267,8 @@
disableOutput(output);
}
- if (newScreenSize != currentScreenSize) {
- setScreenSize(newScreenSize);
+ if (intermediateScreenSize != currentScreenSize) {
+ setScreenSize(intermediateScreenSize);
}
bool forceScreenSizeUpdate = false;
@@ -286,9 +296,14 @@
setPrimaryOutput(primaryOutput);
}
- if (forceScreenSizeUpdate) {
- const QSize newSize = screenSize(config);
- qCDebug(KSCREEN_XRANDR) << "forced to change screen size: " << newSize;
+ if (forceScreenSizeUpdate || intermediateScreenSize != newScreenSize) {
+ QSize newSize;
+ if (forceScreenSizeUpdate) {
+ newSize = screenSize(config);
+ qCDebug(KSCREEN_XRANDR) << "Forced to change screen size: " << newSize;
+ } else {
+ newSize = intermediateScreenSize;
+ }
setScreenSize(newSize);
}
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libkscreen-5.3.0/src/backendlauncher/backendloader.cpp new/libkscreen-5.3.1/src/backendlauncher/backendloader.cpp
--- old/libkscreen-5.3.0/src/backendlauncher/backendloader.cpp 2015-04-23 12:04:35.000000000 +0200
+++ new/libkscreen-5.3.1/src/backendlauncher/backendloader.cpp 2015-05-21 18:59:03.000000000 +0200
@@ -26,13 +26,25 @@
#include <QPluginLoader>
#include <QX11Info>
+#include <memory>
+
#include <QDBusConnection>
#include <QDBusInterface>
Q_LOGGING_CATEGORY(KSCREEN_BACKEND_LAUNCHER, "kscreen.backendLauncher")
+void pluginDeleter(QPluginLoader *p)
+{
+ if (p) {
+ qCDebug(KSCREEN_BACKEND_LAUNCHER) << "Unloading" << p->fileName();
+ p->unload();
+ delete p;
+ }
+}
+
BackendLoader::BackendLoader()
: QObject()
+ , mLoader(0)
, mBackend(0)
{
}
@@ -40,6 +52,8 @@
BackendLoader::~BackendLoader()
{
delete mBackend;
+ pluginDeleter(mLoader);
+ qCDebug(KSCREEN_BACKEND_LAUNCHER) << "Backend loader destroyed";
}
bool BackendLoader::loadBackend(const QString& backend)
@@ -77,12 +91,11 @@
}
qCDebug(KSCREEN_BACKEND_LAUNCHER) << "Trying" << finfo.filePath();
- QPluginLoader loader(finfo.filePath());
- loader.load();
- QObject *instance = loader.instance();
+ // Make sure we unload() and delete the loader whenever it goes out of scope here
+ std::unique_ptr
participants (1)
-
root@hilbert.suse.de