Hello community,

here is the log from the commit of package plasma5-workspace for 
openSUSE:Factory checked in at 2016-03-03 15:15:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/plasma5-workspace (Old)
 and      /work/SRC/openSUSE:Factory/.plasma5-workspace.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "plasma5-workspace"

Changes:
--------
--- /work/SRC/openSUSE:Factory/plasma5-workspace/plasma5-workspace.changes      
2016-03-02 14:20:31.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.plasma5-workspace.new/plasma5-workspace.changes 
2016-03-03 15:15:29.000000000 +0100
@@ -1,0 +2,17 @@
+Wed Mar  2 10:15:41 UTC 2016 - [email protected]
+
+- Added xembedsniproxy-avoid-ghost-entry.patch from upstream:
+  prevents an empty icon being shown when e.g. fcitx is running
+  (boo#954623, kde#358719)
+
+-------------------------------------------------------------------
+Tue Mar  1 17:33:31 UTC 2016 - [email protected]
+
+- Update to 5.5.5 (boo#968966)
+  * Bugfix release
+  * For more details please see:
+    https://www.kde.org/announcements/plasma-5.5.5.php
+- Drop upstreamed fix-session-switch.patch and 
+  reset-the-model-on-list-always-shown-hide-change.patch
+
+-------------------------------------------------------------------

Old:
----
  fix-session-switch.patch
  plasma-workspace-5.5.4.tar.xz
  reset-the-model-on-list-always-shown-hide-change.patch

New:
----
  plasma-workspace-5.5.5.2.tar.xz
  xembedsniproxy-avoid-ghost-entry.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ plasma5-workspace.spec ++++++
--- /var/tmp/diff_new_pack.u8GMbE/_old  2016-03-03 15:15:30.000000000 +0100
+++ /var/tmp/diff_new_pack.u8GMbE/_new  2016-03-03 15:15:30.000000000 +0100
@@ -18,9 +18,9 @@
 
 %bcond_without lang
 Name:           plasma5-workspace
-Version:        5.5.4
+Version:        5.5.5.2
 Release:        0
-%define plasma_version 5.5.4
+%define plasma_version 5.5.5
 Summary:        The KDE Plasma Workspace Components
 License:        GPL-2.0+
 Group:          System/GUI/KDE
@@ -39,9 +39,8 @@
 # PATCH-FIX_OPENSUSE plasmashell-disable-windowclosing-on-logout.patch 
kde#349805 [email protected] -- Prevent plasma from closing too early on logout 
resulting in an unusable desktop if the logout is cancelled
 Patch4:         plasmashell-disable-windowclosing-on-logout.patch
 # PATCHES 100-200 and above are from upstream 5.5 branch
-Patch100:       reset-the-model-on-list-always-shown-hide-change.patch
-Patch101:       fix-session-switch.patch
 # PATCHES 201-300 and above are from upstream master/5.6 branch
+Patch201:       xembedsniproxy-avoid-ghost-entry.patch
 BuildRequires:  kf5-filesystem
 BuildRequires:  update-desktop-files
 BuildRequires:  cmake(KF5Activities) >= 5.15.0
@@ -211,8 +210,7 @@
 %patch2 -p1
 %patch3 -p1
 %patch4 -p1
-%patch100 -p1
-%patch101 -p1
+%patch201 -p1
 
 %build
   %cmake_kf5 -d build -- -DKDE4_COMMON_PAM_SERVICE=xdm 
-DKDE_DEFAULT_HOME=.kde4 -DCMAKE_INSTALL_LOCALEDIR=share/locale/kf5

++++++ plasma-workspace-5.5.4.tar.xz -> plasma-workspace-5.5.5.2.tar.xz ++++++
/work/SRC/openSUSE:Factory/plasma5-workspace/plasma-workspace-5.5.4.tar.xz 
/work/SRC/openSUSE:Factory/.plasma5-workspace.new/plasma-workspace-5.5.5.2.tar.xz
 differ: char 27, line 1

++++++ xembedsniproxy-avoid-ghost-entry.patch ++++++
From: Weng Xuetian <[email protected]>
Date: Tue, 09 Feb 2016 02:56:59 +0000
Subject: Check whether there is any BadWindow error before monitor the event
X-Git-Url: 
http://quickgit.kde.org/?p=plasma-workspace.git&a=commitdiff&h=829158f830555c031755c6d4348e684779264342
---
Check whether there is any BadWindow error before monitor the event

The tray window itself may be destroyed before we start monitor the
event of it. Check the returned error and skip this window if BadWindow
happens.

FIXED-IN: 5.6.0
BUG: 358719
REVIEW: 127014
---


--- a/xembed-sni-proxy/fdoselectionmanager.cpp
+++ b/xembed-sni-proxy/fdoselectionmanager.cpp
@@ -83,7 +83,7 @@
     m_selectionOwner->claim(false);
 }
 
-void FdoSelectionManager::addDamageWatch(xcb_window_t client)
+bool FdoSelectionManager::addDamageWatch(xcb_window_t client)
 {
     qCDebug(SNIPROXY) << "adding damage watch for " << client;
 
@@ -94,15 +94,27 @@
     m_damageWatches[client] = damageId;
     xcb_damage_create(c, damageId, client, XCB_DAMAGE_REPORT_LEVEL_NON_EMPTY);
 
-    QScopedPointer<xcb_get_window_attributes_reply_t, 
QScopedPointerPodDeleter> attr(xcb_get_window_attributes_reply(c, 
attribsCookie, Q_NULLPTR));
+    xcb_generic_error_t *error = Q_NULLPTR;
+    QScopedPointer<xcb_get_window_attributes_reply_t, 
QScopedPointerPodDeleter> attr(xcb_get_window_attributes_reply(c, 
attribsCookie, &error));
+    QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> 
getAttrError(error);
     uint32_t events = XCB_EVENT_MASK_STRUCTURE_NOTIFY;
     if (!attr.isNull()) {
         events = events | attr->your_event_mask;
     }
+    // if window is already gone, there is no need to handle it.
+    if (getAttrError && getAttrError->error_code == XCB_WINDOW) {
+        return false;
+    }
     // the event mask will not be removed again. We cannot track whether 
another component also needs STRUCTURE_NOTIFY (e.g. KWindowSystem).
     // if we would remove the event mask again, other areas will break.
-    xcb_change_window_attributes(c, client, XCB_CW_EVENT_MASK, &events);
-
+    const auto changeAttrCookie = xcb_change_window_attributes_checked(c, 
client, XCB_CW_EVENT_MASK, &events);
+    QScopedPointer<xcb_generic_error_t, QScopedPointerPodDeleter> 
changeAttrError(xcb_request_check(c, changeAttrCookie));
+    // if window is gone by this point, it will be catched by eventFilter, so 
no need to check later errors.
+    if (changeAttrError && changeAttrError->error_code == XCB_WINDOW) {
+        return false;
+    }
+
+    return true;
 }
 
 bool FdoSelectionManager::nativeEventFilter(const QByteArray& eventType, void* 
message, long int* result)
@@ -130,6 +142,11 @@
         if (m_proxies[unmappedWId]) {
             undock(unmappedWId);
         }
+    } else if (responseType == XCB_DESTROY_NOTIFY) {
+        const auto destroyedWId = reinterpret_cast<xcb_destroy_notify_event_t 
*>(ev)->window;
+        if (m_proxies[destroyedWId]) {
+            undock(destroyedWId);
+        }
     } else if (responseType == m_damageEventBase + XCB_DAMAGE_NOTIFY) {
         const auto damagedWId = reinterpret_cast<xcb_damage_notify_event_t 
*>(ev)->drawable;
         const auto sniProx = m_proxies[damagedWId];
@@ -153,8 +170,9 @@
         return;
     }
 
-    addDamageWatch(winId);
-    m_proxies[winId] = new SNIProxy(winId, this);
+    if (addDamageWatch(winId)) {
+        m_proxies[winId] = new SNIProxy(winId, this);
+    }
 }
 
 void FdoSelectionManager::undock(xcb_window_t winId)

--- a/xembed-sni-proxy/fdoselectionmanager.h
+++ b/xembed-sni-proxy/fdoselectionmanager.h
@@ -48,7 +48,7 @@
 
 private:
     void init();
-    void addDamageWatch(xcb_window_t client);
+    bool addDamageWatch(xcb_window_t client);
     void dock(xcb_window_t embed_win);
     void undock(xcb_window_t client);
 

Reply via email to