diff options
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.patch | 130 |
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}" |