diff --git a/0001-Ensure-the-xcb-connection-gets-flushed-before-the-ev.patch b/0001-Ensure-the-xcb-connection-gets-flushed-before-the-ev.patch new file mode 100644 index 0000000..abb95a5 --- /dev/null +++ b/0001-Ensure-the-xcb-connection-gets-flushed-before-the-ev.patch @@ -0,0 +1,116 @@ +From 6210b6bb8af128c8e93c77330af80185d8ac3bec Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= +Date: Wed, 21 May 2014 08:10:07 +0200 +Subject: [PATCH 1/1] Ensure the xcb connection gets flushed before the event + dispatcher blocks + +This is a workaround for Qt versions which do not yet have the change +https://codereview.qt-project.org/85654 + +It is important to have this workaround as applications can get stalled +when a framework uses xcb and doesn't flush the connection manually. + +BUG: 334858 +REVIEW: 118234 +--- + src/platformtheme/CMakeLists.txt | 19 +++++++++++++++ + src/platformtheme/config-platformtheme.h.cmake | 1 + + src/platformtheme/main.cpp | 33 ++++++++++++++++++++++++++ + 3 files changed, 53 insertions(+) + create mode 100644 src/platformtheme/config-platformtheme.h.cmake + +diff --git a/src/platformtheme/CMakeLists.txt b/src/platformtheme/CMakeLists.txt +index da77cf8..8a3b1b4 100644 +--- a/src/platformtheme/CMakeLists.txt ++++ b/src/platformtheme/CMakeLists.txt +@@ -1,3 +1,18 @@ ++if(NOT APPLE) ++ find_package(XCB COMPONENTS XCB) ++ set_package_properties(XCB PROPERTIES ++ TYPE RECOMMENDED ++ PURPOSE "Required for flushing the XCB connection on the X11 Platform" ++ ) ++ set(HAVE_X11 ${XCB_XCB_FOUND}) ++ if (XCB_XCB_FOUND) ++ find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED X11Extras) ++ endif() ++else() ++ set(HAVE_X11 FALSE) ++endif() ++ ++configure_file(config-platformtheme.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-platformtheme.h ) + + set(platformtheme_SRCS + kdeplatformtheme.cpp +@@ -30,4 +45,8 @@ target_link_libraries(KDEPlatformTheme + KF5::Notifications + ) + ++if(HAVE_X11) ++ target_link_libraries(KDEPlatformTheme PRIVATE Qt5::X11Extras XCB::XCB) ++endif() ++ + install(TARGETS KDEPlatformTheme DESTINATION ${QT_PLUGIN_INSTALL_DIR}/platformthemes) +diff --git a/src/platformtheme/config-platformtheme.h.cmake b/src/platformtheme/config-platformtheme.h.cmake +new file mode 100644 +index 0000000..89858d1 +--- /dev/null ++++ b/src/platformtheme/config-platformtheme.h.cmake +@@ -0,0 +1 @@ ++#cmakedefine01 HAVE_X11 +diff --git a/src/platformtheme/main.cpp b/src/platformtheme/main.cpp +index 21d9aa0..d2c2bb1 100644 +--- a/src/platformtheme/main.cpp ++++ b/src/platformtheme/main.cpp +@@ -22,6 +22,14 @@ + + #include "kdeplatformtheme.h" + ++#include ++#if HAVE_X11 ++#include ++#include ++#include ++#include ++#endif ++ + class KdePlatformThemePlugin : public QPlatformThemePlugin + { + Q_OBJECT +@@ -34,8 +42,33 @@ public: + { + Q_UNUSED(key) + Q_UNUSED(paramList) ++ // Must be done after we have an event-dispatcher. By posting a method invocation ++ // we are sure that by the time the method is called we have an event-dispatcher. ++ QMetaObject::invokeMethod(this, "setupXcbFlush", Qt::QueuedConnection); + return new KdePlatformTheme; + } ++ ++public Q_SLOTS: ++ void setupXcbFlush(); + }; + ++void KdePlatformThemePlugin::setupXcbFlush() ++{ ++#if HAVE_X11 ++ // this is a workaround for BUG 334858 ++ // it ensures that the xcb connection gets flushed before the EventDispatcher ++ // is going to block. Qt does not guarantee this in all cases. ++ // For Qt this issue is addressed in https://codereview.qt-project.org/85654 ++ // TODO: remove again once we depend on a Qt version with the patch. ++ if (!QX11Info::isPlatformX11()) { ++ return; ++ } ++ connect(QCoreApplication::eventDispatcher(), &QAbstractEventDispatcher::aboutToBlock, ++ []() { ++ xcb_flush(QX11Info::connection()); ++ } ++ ); ++#endif ++} ++ + #include "main.moc" +-- +1.9.3 + diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..3b67471 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,3 @@ +libKF5Style5 +frameworkintegration-devel + requires "libKF5Style5- = " diff --git a/frameworkintegration-4.100.0.tar.xz b/frameworkintegration-4.100.0.tar.xz new file mode 100644 index 0000000..2141af8 --- /dev/null +++ b/frameworkintegration-4.100.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08f1b4d6804386cda52ce51635cf0e270033f39a24ac1df04287c267dad90391 +size 1756348 diff --git a/frameworkintegration-4.99.0.tar.xz b/frameworkintegration-4.99.0.tar.xz deleted file mode 100644 index 4c424c9..0000000 --- a/frameworkintegration-4.99.0.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:86c88f3c2a50bd510e65be4842e6962ceb257e02c619e6942cf426c65390088d -size 1755400 diff --git a/frameworkintegration.changes b/frameworkintegration.changes index 0fa1676..e5ff4ab 100644 --- a/frameworkintegration.changes +++ b/frameworkintegration.changes @@ -1,3 +1,15 @@ +------------------------------------------------------------------- +Sun Jun 1 18:02:20 UTC 2014 - hrvoje.senjan@gmail.com + +- Update to 4.100.0 + * API improvements and cleanups + * Buildsystem fixes + * For more details please see: + http://www.kde.org/announcements/announce-frameworks5-beta3.php +- Add 0001-Ensure-the-xcb-connection-gets-flushed-before-the-ev.patch + (kde#334858) +- Added baselibs.conf + ------------------------------------------------------------------- Sun May 4 01:14:44 UTC 2014 - hrvoje.senjan@gmail.com diff --git a/frameworkintegration.spec b/frameworkintegration.spec index 0d6ee9c..e21f52a 100644 --- a/frameworkintegration.spec +++ b/frameworkintegration.spec @@ -18,10 +18,10 @@ %define lname libKF5Style5 Name: frameworkintegration -Version: 4.99.0 +Version: 4.100.0 Release: 0 BuildRequires: cmake >= 2.8.12 -BuildRequires: extra-cmake-modules >= 0.0.13 +BuildRequires: extra-cmake-modules >= 0.0.14 BuildRequires: fdupes BuildRequires: kconfig-devel >= %{_kf5_version} BuildRequires: kconfigwidgets-devel >= %{_kf5_version} @@ -41,7 +41,10 @@ Summary: Plugins responsible for better integration of Qt applications in License: LGPL-2.1+ Group: System/GUI/KDE Url: http://www.kde.org -Source0: frameworkintegration-%{version}.tar.xz +Source: http://download.kde.org/unstable/frameworks/%{version}/%{name}-%{version}.tar.xz +Source1: baselibs.conf +# PATCH-FIX-UPSTREAM 0001-Ensure-the-xcb-connection-gets-flushed-before-the-ev.patch -- kde#334858 +Patch0: 0001-Ensure-the-xcb-connection-gets-flushed-before-the-ev.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -55,6 +58,7 @@ Applications do not need to link to this directly. Summary: Plugins responsible for better integration of Qt applications in KDE Workspace Group: System/GUI/KDE Obsoletes: libKF5Style4 +Recommends: %lname-lang = %{version} %description -n %lname Framework Integration is a set of plugins responsible for better @@ -78,8 +82,10 @@ KDE Plasma workspace. Applications do not need to link to this directly. Development files +%lang_package -n %lname %prep %setup -q +%patch0 -p1 %build %cmake_kf5 -d build @@ -89,10 +95,14 @@ Applications do not need to link to this directly. Development files %kf5_makeinstall -C build %fdupes -s %{buildroot} + %find_lang %{name}5 + %post -n %lname -p /sbin/ldconfig %postun -n %lname -p /sbin/ldconfig +%files -n %lname-lang -f %{name}5.lang + %files -n %lname %defattr(-,root,root) %doc COPYING* README*