[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kde-workspace] /: kwin: Drop the xcb_icccm dependency
From:       Fredrik_Höglund <fredrik () kde ! org>
Date:       2013-07-01 22:28:59
Message-ID: E1Utmah-00006Y-NW () scm ! kde ! org
[Download RAW message or body]

Git commit 4efbba7a8dd871ffa898d139f344d17c0db5c96f by Fredrik Höglund.
Committed on 26/06/2013 at 23:05.
Pushed by fredrik into branch 'master'.

kwin: Drop the xcb_icccm dependency

This dependency is causing build problems on a number of systems,
and it doesn't make much sense to bring in a whole library for three
one-line convenience functions.

M  +2    -7    cmake/modules/FindXCB.cmake
M  +0    -1    kwin/CMakeLists.txt
M  +1    -1    kwin/group.cpp
M  +20   -11   kwin/xcbutils.h

http://commits.kde.org/kde-workspace/4efbba7a8dd871ffa898d139f344d17c0db5c96f

diff --git a/cmake/modules/FindXCB.cmake b/cmake/modules/FindXCB.cmake
index 6cc5269..a065468 100644
--- a/cmake/modules/FindXCB.cmake
+++ b/cmake/modules/FindXCB.cmake
@@ -21,7 +21,6 @@
 #   XCB_IMAGE_FOUND      XCB_IMAGE_INCLUDE_DIR      XCB_IMAGE_LIBRARIES
 #   XCB_RENDERUTIL_FOUND XCB_RENDERUTIL_INCLUDE_DIR XCB_RENDERUTIL_LIBRARIES
 #   XCB_KEYSYMS_FOUND    XCB_KEYSYMS_INCLUDE_DIR    XCB_KEYSYMS_LIBRARIES
-#   XCB_ICCCM_FOUND      XCB_ICCCM_INCLUDE_DIR      XCB_ICCCM_LIBRARIES
 #   XCB_XTEST_FOUND      XCB_XTEST_INCLUDE_DIR      XCB_XTEST_LIBRARIES
 #
 # Copyright (c) 2012 Fredrik Höglund <fredrik@kde.org>
@@ -57,7 +56,6 @@ IF (NOT WIN32)
   FIND_PATH(XCB_IMAGE_INCLUDE_DIR       NAMES xcb/xcb_image.h       HINTS \
${PKG_XCB_INCLUDE_DIRS})  FIND_PATH(XCB_RENDERUTIL_INCLUDE_DIR  NAMES \
xcb/xcb_renderutil.h  HINTS ${PKG_XCB_INCLUDE_DIRS})  \
FIND_PATH(XCB_KEYSYMS_INCLUDE_DIR     NAMES xcb/xcb_keysyms.h     HINTS \
                ${PKG_XCB_INCLUDE_DIRS})
-  FIND_PATH(XCB_ICCCM_INCLUDE_DIR       NAMES xcb/xcb_icccm.h       HINTS \
${PKG_XCB_INCLUDE_DIRS})  FIND_PATH(XCB_XTEST_INCLUDE_DIR       NAMES xcb/xtest.h     \
HINTS ${PKG_XCB_INCLUDE_DIRS})  
   FIND_LIBRARY(XCB_XCB_LIBRARIES         NAMES xcb              HINTS \
${PKG_XCB_LIBRARY_DIRS}) @@ -72,20 +70,19 @@ IF (NOT WIN32)
   FIND_LIBRARY(XCB_IMAGE_LIBRARIES       NAMES xcb-image        HINTS \
${PKG_XCB_LIBRARY_DIRS})  FIND_LIBRARY(XCB_RENDERUTIL_LIBRARIES  NAMES \
xcb-render-util  HINTS ${PKG_XCB_LIBRARY_DIRS})  FIND_LIBRARY(XCB_KEYSYMS_LIBRARIES   \
                NAMES xcb-keysyms      HINTS ${PKG_XCB_LIBRARY_DIRS})
-  FIND_LIBRARY(XCB_ICCCM_LIBRARIES       NAMES xcb-icccm        HINTS \
${PKG_XCB_LIBRARY_DIRS})  FIND_LIBRARY(XCB_XTEST_LIBRARIES       NAMES xcb-xtest      \
HINTS ${PKG_XCB_LIBRARY_DIRS})  
   set(XCB_INCLUDE_DIR ${XCB_XCB_INCLUDE_DIR} ${XCB_COMPOSITE_INCLUDE_DIR} \
                ${XCB_XFIXES_INCLUDE_DIR}
           ${XCB_DAMAGE_INCLUDE_DIR} ${XCB_RENDER_INCLUDE_DIR} \
                ${XCB_RANDR_INCLUDE_DIR}
           ${XCB_SHAPE_INCLUDE_DIR} ${XCB_SHM_INCLUDE_DIR} ${XCB_SYNC_INCLUDE_DIR}
           ${XCB_IMAGE_INCLUDE_DIR} ${XCB_RENDERUTIL_INCLUDE_DIR} \
                ${XCB_KEYSYMS_INCLUDE_DIR}
-          ${XCB_ICCCM_INCLUDE_DIR} ${XCB_XTEST_INCLUDE_DIR})
+          ${XCB_XTEST_INCLUDE_DIR})
 
   set(XCB_LIBRARIES ${XCB_XCB_LIBRARIES} ${XCB_COMPOSITE_LIBRARIES} \
                ${XCB_XFIXES_LIBRARIES}
           ${XCB_DAMAGE_LIBRARIES} ${XCB_RENDER_LIBRARIES} ${XCB_RANDR_LIBRARIES}
           ${XCB_SHAPE_LIBRARIES} ${XCB_SHM_LIBRARIES} ${XCB_SYNC_LIBRARIES}
           ${XCB_IMAGE_LIBRARIES} ${XCB_RENDERUTIL_LIBRARIES} \
                ${XCB_KEYSYMS_LIBRARIES}
-          ${XCB_ICCCM_LIBRARIES} ${XCB_XTEST_LIBRARIES})
+          ${XCB_XTEST_LIBRARIES})
 
   list(REMOVE_DUPLICATES XCB_INCLUDE_DIR)
 
@@ -103,7 +100,6 @@ IF (NOT WIN32)
   FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_IMAGE       DEFAULT_MSG  XCB_IMAGE_LIBRARIES \
XCB_IMAGE_INCLUDE_DIR)  FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_RENDERUTIL  DEFAULT_MSG \
XCB_RENDERUTIL_LIBRARIES  XCB_RENDERUTIL_INCLUDE_DIR)  \
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_KEYSYMS     DEFAULT_MSG  XCB_KEYSYMS_LIBRARIES  \
                XCB_KEYSYMS_INCLUDE_DIR)
-  FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_ICCCM       DEFAULT_MSG  XCB_ICCCM_LIBRARIES \
XCB_ICCCM_INCLUDE_DIR)  FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB_XTEST       DEFAULT_MSG \
XCB_XTEST_LIBRARIES       XCB_XTEST_INCLUDE_DIR)  \
FIND_PACKAGE_HANDLE_STANDARD_ARGS(XCB             DEFAULT_MSG  XCB_LIBRARIES          \
XCB_INCLUDE_DIR)  
@@ -121,7 +117,6 @@ IF (NOT WIN32)
         XCB_IMAGE_INCLUDE_DIR       XCB_IMAGE_LIBRARIES
         XCB_RENDERUTIL_INCLUDE_DIR  XCB_RENDERUTIL_LIBRARIES
         XCB_KEYSYMS_INCLUDE_DIR     XCB_KEYSYMS_LIBRARIES
-        XCB_ICCCM_INCLUDE_DIR       XCB_ICCCM_LIBRARIES
         XCB_XTEST_INCLUDE_DIR       XCB_XTEST_LIBRARIES
   )
 
diff --git a/kwin/CMakeLists.txt b/kwin/CMakeLists.txt
index 245dd10..9d9cae3 100644
--- a/kwin/CMakeLists.txt
+++ b/kwin/CMakeLists.txt
@@ -253,7 +253,6 @@ set(kwin_XCB_LIBS
     ${XCB_RENDER_LIBRARIES}
     ${XCB_RANDR_LIBRARIES}
     ${XCB_KEYSYMS_LIBRARIES}
-    ${XCB_ICCCM_LIBRARIES}
 )
 
 set(kwin_WAYLAND_LIBS
diff --git a/kwin/group.cpp b/kwin/group.cpp
index 7d6f456..26fa419 100644
--- a/kwin/group.cpp
+++ b/kwin/group.cpp
@@ -816,7 +816,7 @@ xcb_window_t Client::verifyTransientFor(xcb_window_t \
new_transient_for, bool set  new_transient_for = rootWindow();
     }
     if (new_property_value != m_originalTransientForId)
-        xcb_icccm_set_wm_transient_for(connection(), window(), new_property_value);
+        Xcb::setTransientFor(window(), new_property_value);
     return new_transient_for;
 }
 
diff --git a/kwin/xcbutils.h b/kwin/xcbutils.h
index 92a17f3..1a4befd 100644
--- a/kwin/xcbutils.h
+++ b/kwin/xcbutils.h
@@ -29,11 +29,6 @@ along with this program.  If not, see \
<http://www.gnu.org/licenses/>.  
 #include <xcb/xcb.h>
 #include <xcb/composite.h>
-#define class class_name //HACK: work around a non-C++ safe problem in xcb_iccm.h
-                         //where they put a variable called "class" in function \
                signatures.
-                         //Needed at least for xcb v0.3.8
-#include <xcb/xcb_icccm.h>
-#undef class             //UNDO HACK
 
 namespace KWin {
 
@@ -211,10 +206,15 @@ public:
     }
 };
 
-class TransientFor : public Wrapper<xcb_get_property_reply_t, \
xcb_get_property_cookie_t, &xcb_get_property_reply, \
&xcb_icccm_get_wm_transient_for_unchecked> +inline xcb_get_property_cookie_t \
get_transient_for(xcb_connection_t *c, xcb_window_t window) +{
+    return xcb_get_property_unchecked(c, 0, window, XCB_ATOM_WM_TRANSIENT_FOR, \
XCB_ATOM_WINDOW, 0, 1); +}
+
+class TransientFor : public Wrapper<xcb_get_property_reply_t, \
xcb_get_property_cookie_t, &xcb_get_property_reply, &get_transient_for>  {
 public:
-    explicit TransientFor(WindowId window) : Wrapper<xcb_get_property_reply_t, \
xcb_get_property_cookie_t, &xcb_get_property_reply, \
&xcb_icccm_get_wm_transient_for_unchecked>(window) {} +    explicit \
TransientFor(WindowId window) : Wrapper<xcb_get_property_reply_t, \
xcb_get_property_cookie_t, &xcb_get_property_reply, &get_transient_for>(window) {}  
     /**
      * @brief Fill given window pointer with the WM_TRANSIENT_FOR property of a \
window. @@ -225,10 +225,13 @@ public:
         if (isNull()) {
             return false;
         }
-        if (xcb_icccm_get_wm_transient_for_from_reply(prop, \
                const_cast<xcb_get_property_reply_t*>(data()))) {
-            return true;
-        }
-        return false;
+
+        const xcb_get_property_reply_t *reply = data();
+        if (!reply || reply->type != XCB_ATOM_WINDOW || reply->format != 32 || \
reply->length == 0) +            return false;
+
+        *prop = *reinterpret_cast<WindowId *>(xcb_get_property_value(reply));
+        return true;
     }
 };
 
@@ -685,6 +688,12 @@ static inline void setInputFocus(xcb_window_t window, uint8_t \
revertTo, xcb_time  xcb_set_input_focus(connection(), revertTo, window, time);
 }
 
+static inline void setTransientFor(xcb_window_t window, xcb_window_t \
transient_for_window) +{
+    xcb_change_property(connection(), XCB_PROP_MODE_REPLACE, window, \
XCB_ATOM_WM_TRANSIENT_FOR, +                        XCB_ATOM_WINDOW, 32, 1, \
&transient_for_window); +}
+
 } // namespace X11
 
 } // namespace KWin


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic