Review Request 125309: Support multiple X servers in the NETWM classes

Thomas Lübking thomas.luebking at gmail.com
Sat Sep 19 13:22:47 UTC 2015


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/125309/
-----------------------------------------------------------

Review request for KDE Frameworks and Martin Gräßlin.


Repository: kwindowsystem


Description
-------

alteration review #125259 minus the autotests

Significant difference is the creation and handling of the Atom enum.

1. Net::Utf8 makes no sense
2. Net::WmFoo re/adds ambiguity between _NET_WM and WM_, notably on _STATE (there's nothing such as XA_WM_STATE)
3. the most "important" grouping is whether it's WM_, NET_WM_, NET_, KDE_NET_, or ... UTF8, I'm not sure why one would add more enums (since this is internal API and the resolved type will always be xcb_atom_t - in worst case we run into errors on comparing the enums
4. I wanted to get rid of the explicit counter variable as well as any loose assignment between atom variable/enum and string.

-----

So far on first creation of a NETRootInfo or NETWinInfo a static
initialization of atoms was performed. This meant that the NET classes
are only able to interact with the X server the first NET class is
connected to.

Normally applications don't need to interact with multiple X servers.
An exception is kwin_wayland which needs a connection to its Xwayland
server and on the x11 backend to the X server it renders to. So far
KWin could not use the NET classes for it, causing the rendering window
to e.g. not have a window title.

This change removes the implicit constraint on one X server by
creating a hash of connection and atoms. For each created NET class
we check whether we have already resolved the atoms, if yes we reuse
otherwise we create them.

For the normal use case of one X11 connection the change should be
rather minimal. Instead of performing the check whether the static
atoms have been created, it now is a check whether the atoms for the
connection have been created. The atoms are kept in a
QSharedDataPointer ensuring that we don't needless copy the atoms into
each class.

CHANGELOG: Allow interacting with multiple X servers in the NETWM classes.


Diffs
-----

  src/platforms/xcb/netwm_p.h 917a86e 
  src/platforms/xcb/atoms_p.h PRE-CREATION 
  src/platforms/xcb/netwm.cpp d99a925 

Diff: https://git.reviewboard.kde.org/r/125309/diff/


Testing
-------


Thanks,

Thomas Lübking

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kde-frameworks-devel/attachments/20150919/4a958076/attachment.html>


More information about the Kde-frameworks-devel mailing list