summary refs log tree commit diff
path: root/pkgs/desktops/plasma-5.3/libkscreen/libkscreen-backend-path.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/plasma-5.3/libkscreen/libkscreen-backend-path.patch')
-rw-r--r--pkgs/desktops/plasma-5.3/libkscreen/libkscreen-backend-path.patch130
1 files changed, 130 insertions, 0 deletions
diff --git a/pkgs/desktops/plasma-5.3/libkscreen/libkscreen-backend-path.patch b/pkgs/desktops/plasma-5.3/libkscreen/libkscreen-backend-path.patch
new file mode 100644
index 00000000000..d5797924d23
--- /dev/null
+++ b/pkgs/desktops/plasma-5.3/libkscreen/libkscreen-backend-path.patch
@@ -0,0 +1,130 @@
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 460022f..422a708 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -1,5 +1,7 @@
+ include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${QT_INCLUDES})
+ 
++configure_file(config-libkscreen.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-libkscreen.h)
++
+ set(libkscreen_SRCS
+     backendloader.cpp
+     config.cpp
+diff --git a/src/backendloader.cpp b/src/backendloader.cpp
+index b93e469..8aebc14 100644
+--- a/src/backendloader.cpp
++++ b/src/backendloader.cpp
+@@ -16,6 +16,7 @@
+  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA       *
+  *************************************************************************************/
+ 
++#include "config-libkscreen.h"
+ #include "backendloader.h"
+ #include "debug_p.h"
+ #include "backends/abstractbackend.h"
+@@ -40,55 +41,54 @@ bool BackendLoader::init()
+     const QString backend = qgetenv("KSCREEN_BACKEND").constData();
+     const QString backendFilter = QString::fromLatin1("KSC_%1*").arg(backend);
+ 
+-    const QStringList paths = QCoreApplication::libraryPaths();
+-    Q_FOREACH (const QString &path, paths) {
+-        const QDir dir(path + QDir::separator() + QLatin1String("/kf5/kscreen/"),
+-                       backendFilter,
+-                       QDir::SortFlags(QDir::QDir::NoSort),
+-                       QDir::NoDotAndDotDot | QDir::Files);
+-        const QFileInfoList finfos = dir.entryInfoList();
+-        Q_FOREACH (const QFileInfo &finfo, finfos) {
+-            // Skip "Fake" backend unless explicitly specified via KSCREEN_BACKEND
+-            if (backend.isEmpty() && finfo.fileName().contains(QLatin1String("KSC_Fake"))) {
+-                continue;
+-            }
++    QString path = QFile::decodeName(CMAKE_INSTALL_PREFIX "/" PLUGIN_INSTALL_DIR "/");
+ 
+-            // When on X11, skip the QScreen backend, instead use the XRandR backend,
+-            // if not specified in KSCREEN_BACKEND
+-            if (backend.isEmpty() &&
+-                    finfo.fileName().contains(QLatin1String("KSC_QScreen")) &&
+-                    QX11Info::isPlatformX11()) {
+-                continue;
+-            }
++    const QDir dir(path + QDir::separator() + QLatin1String("/kf5/kscreen/"),
++                   backendFilter,
++                   QDir::SortFlags(QDir::QDir::NoSort),
++                   QDir::NoDotAndDotDot | QDir::Files);
++    const QFileInfoList finfos = dir.entryInfoList();
++    Q_FOREACH (const QFileInfo &finfo, finfos) {
++        // Skip "Fake" backend unless explicitly specified via KSCREEN_BACKEND
++        if (backend.isEmpty() && finfo.fileName().contains(QLatin1String("KSC_Fake"))) {
++            continue;
++        }
+ 
+-            // When not on X11, skip the XRandR backend, and fall back to QSCreen
+-            // if not specified in KSCREEN_BACKEND
+-            if (backend.isEmpty() &&
+-                    finfo.fileName().contains(QLatin1String("KSC_XRandR")) &&
+-                    !QX11Info::isPlatformX11()) {
+-                continue;
+-            }
++        // When on X11, skip the QScreen backend, instead use the XRandR backend,
++        // if not specified in KSCREEN_BACKEND
++        if (backend.isEmpty() &&
++                finfo.fileName().contains(QLatin1String("KSC_QScreen")) &&
++                QX11Info::isPlatformX11()) {
++            continue;
++        }
++
++        // When not on X11, skip the XRandR backend, and fall back to QSCreen
++        // if not specified in KSCREEN_BACKEND
++        if (backend.isEmpty() &&
++                finfo.fileName().contains(QLatin1String("KSC_XRandR")) &&
++                !QX11Info::isPlatformX11()) {
++            continue;
++        }
+ 
+-            QPluginLoader loader(finfo.filePath());
+-            loader.load();
+-            QObject *instance = loader.instance();
+-            if (!instance) {
++        QPluginLoader loader(finfo.filePath());
++        loader.load();
++        QObject *instance = loader.instance();
++        if (!instance) {
++            loader.unload();
++            continue;
++        }
++
++        s_backend = qobject_cast< AbstractBackend* >(instance);
++        if (s_backend) {
++            if (!s_backend->isValid()) {
++                qCDebug(KSCREEN) << "Skipping" << s_backend->name() << "backend";
++                delete s_backend;
++                s_backend = 0;
+                 loader.unload();
+                 continue;
+             }
+-
+-            s_backend = qobject_cast< AbstractBackend* >(instance);
+-            if (s_backend) {
+-                if (!s_backend->isValid()) {
+-                    qCDebug(KSCREEN) << "Skipping" << s_backend->name() << "backend";
+-                    delete s_backend;
+-                    s_backend = 0;
+-                    loader.unload();
+-                    continue;
+-                }
+-                qCDebug(KSCREEN) << "Loading" << s_backend->name() << "backend";
+-                return true;
+-            }
++            qCDebug(KSCREEN) << "Loading" << s_backend->name() << "backend";
++            return true;
+         }
+     }
+ 
+diff --git a/src/config-libkscreen.h.cmake b/src/config-libkscreen.h.cmake
+new file mode 100644
+index 0000000..a99f3d1
+--- /dev/null
++++ b/src/config-libkscreen.h.cmake
+@@ -0,0 +1,2 @@
++#define CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}"
++#define PLUGIN_INSTALL_DIR "${PLUGIN_INSTALL_DIR}"