Porting the NETWM classes to xcb

Fredrik Höglund fredrik at kde.org
Sun Mar 25 17:49:29 UTC 2012


Hi,

I've pushed a branch to my kdelibs clone which ports all the Xlib code in
the NETWM classes to xcb.  The only exception is the event handling code;
after it's been ported, the code will no longer work with Qt 4.

This is an important step toward getting kdelibs to build and work with Qt 5.

The branch is based on KDE/4.8 since it is necessary to test these changes
with plasma and kwin.  The branch merges reasonably cleanly into the
frameworks branch however.

These changes should improve performance since all properties are now
fetched in a single roundtrip to the X server.  You will also notice that I've
found and fixed several bugs along the way.

The diffstat may look daunting, but the individual commits are small, and
in most cases it's a matter of replacing an Xlib call with a call to the
equivalent xcb function.

The branch is available at:
    git://anongit.kde.org/clones/kdelibs/fredrik/kdelibs.git netwm-xcb

Please review.

Fredrik Höglund (32):
      cmake: Add FindXCB.cmake and FindX11XCB.cmake
      kdeui: Link to libxcb and libX11-xcb
      kdeui: Store a pointer to the xcb connection in NETRootInfoPrivate
      kdeui: Store a pointer to the xcb connection in NETWinInfoPrivate
      kdeui: Port create_netwm_atoms() to xcb
      kdeui: Port the first NETRootInfo functions to xcb
      kdeui: Add a helper function in netwm.cpp for sending client messages
      kdeui: Port two more NETRootInfo functions to xcb
      kdeui: Port NETRootInfo::setDesktopName() to xcb
      kdeui: Port NETRootInfo::setDesktopGeometry() to xcb
      kdeui: Port NETRootInfo::setDesktopViewport() to xcb
      kdeui: Port NETRootInfo::setSupported() to xcb
      kdeui: Port NETRootInfo::setActiveWindow() to xcb
      kdeui: Port NETRootInfo::setWorkArea() to xcb
      kdeui: Port NETRootInfo::setVirtualRoots() to xcb
      kdeui: Port NETRootInfo::setDesktopLayout() to xcb
      kdeui: Port NETRootInfo::setShowingDesktop() to xcb
      kdeui: Port more NETRootInfo functions to xcb
      kdeui: Port NETRootInfo::sendPing() to xcb
      kdeui: Port NETRootInfo::takeActivity() to xcb
      kdeui: Port NETRootInfo::update() to xcb
      kdeui: Port NETWinInfo::setIconInternal() to xcb
      kdeui: Port four more NETWinInfo functions to xcb
      kdeui: Port NETWinInfo::setState() to xcb
      kdeui: Port NETWinInfo::setWindowType() to xcb
      kdeui: Port more NETWinInfo functions to xcb
      kdeui: Port NETWinInfo::setDesktop() to xcb
      kdeui: Port more NETWinInfo functions to xcb
      kdeui: Port NETWinInfo::setAllowedActions() to xcb
      kdeui: Port more NETWinInfo functions to xcb
      kdeui: Port NETWinInfo::update() to xcb
      kdeui: Port NETWinInfo::setBlockingCompositing() to xcb

 CMakeLists.txt                   |    3 +
 cmake/modules/FindX11XCB.cmake   |   31 +
 cmake/modules/FindXCB.cmake      |  150 ++
 kdeui/CMakeLists.txt             |    9 +-
 kdeui/windowmanagement/netwm.cpp | 3457 ++++++++++++++++++--------------------
 kdeui/windowmanagement/netwm.h   |    4 +
 kdeui/windowmanagement/netwm_p.h |    2 +
 7 files changed, 1828 insertions(+), 1828 deletions(-)

Fredrik



More information about the Kde-frameworks-devel mailing list