[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