Commit 75cad57c authored by Vlad Zahorodnii's avatar Vlad Zahorodnii
Browse files

Fix invalidation of cached x stacking order in wayland only mode

Currently, if kwin/wayland runs without xwayland, the order in which
windows are painted doesn't actually reflect the true stacking order.

If the stacking order has been changed, we need to invalidate the
cached x stacking order. But it's done only when RootInfo is present.

If Xwayland doesn't run, RootInfo is not available and thus window
raising is completely broken.

With this change, the x stacking order will be invalidated every time
some window has been raised, no matter what mode kwin operates in.
parent 6f53f627
...@@ -113,6 +113,7 @@ void Workspace::updateStackingOrder(bool propagate_new_clients) ...@@ -113,6 +113,7 @@ void Workspace::updateStackingOrder(bool propagate_new_clients)
stacking_order = new_stacking_order; stacking_order = new_stacking_order;
if (changed || propagate_new_clients) { if (changed || propagate_new_clients) {
propagateClients(propagate_new_clients); propagateClients(propagate_new_clients);
markXStackingOrderAsDirty();
emit stackingOrderChanged(); emit stackingOrderChanged();
if (m_compositor) { if (m_compositor) {
m_compositor->addRepaintFull(); m_compositor->addRepaintFull();
...@@ -217,10 +218,6 @@ void Workspace::propagateClients(bool propagate_new_clients) ...@@ -217,10 +218,6 @@ void Workspace::propagateClients(bool propagate_new_clients)
} }
rootInfo()->setClientListStacking(cl, pos); rootInfo()->setClientListStacking(cl, pos);
delete [] cl; delete [] cl;
// Make the cached stacking order invalid here, in case we need the new stacking order before we get
// the matching event, due to X being asynchronous.
markXStackingOrderAsDirty();
} }
/** /**
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment