Fix the osd re-placement on X11

Summary:
6383f83047 introduced a regression hitting
an assert on X11 when an osd window is added.

This change tries to address this by adding a GeometryUpdateBlocker
around the change. The hit assertion is:

    pendingGeometryUpdate() == PendingGeometryNone ||
    areGeometryUpdatesBlocked()

By using a GeometryUpdateBlocker the second condition becomes true
and we no longer hit the condition.

BUG: 374038

Test Plan:
Manual tested both on X11 and Wayland, Wayland autotest
still passes

Reviewers: #kwin, #plasma

Subscribers: plasma-devel, kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D3808
This commit is contained in:
Martin Gräßlin 2016-12-26 11:04:14 +01:00
parent 2b51b85aa1
commit bba18a1ba8

View file

@ -75,6 +75,7 @@ AbstractClient::AbstractClient()
[this] (Toplevel *c, const QRect &old) {
Q_UNUSED(c)
if (isOnScreenDisplay() && !geometry().isEmpty() && old.size() != geometry().size()) {
GeometryUpdatesBlocker blocker(this);
QRect area = workspace()->clientArea(PlacementArea, Screens::self()->current(), desktop());
Placement::self()->place(this, area);
setGeometryRestore(geometry());