[placement] Avoid smart placement strategy with invalid client sizes

Summary:
To do so can in some situations lock up as the loop goes through
different positions incrementing by client->width/height.

If this is zero we can get into a stuck state.

This became a more common issue due to my earlier patch that places windows
in ShellClient::finishInit to allow the maximize placement strategy to
set the first configure size.

BUG: 408754

Reviewers: #kwin, broulik

Reviewed By: broulik

Subscribers: kwin

Tags: #kwin

Differential Revision: https://phabricator.kde.org/D21997
master
David Edmundson 5 years ago
parent 22cbbca043
commit 842b2ce51b

@ -205,6 +205,10 @@ void Placement::placeSmart(AbstractClient* c, const QRect& area, Policy /*next*/
* with ideas from xfce.
*/
if (!c->size().isValid()) {
return;
}
const int none = 0, h_wrong = -1, w_wrong = -2; // overlap types
long int overlap, min_overlap = 0;
int x_optimal, y_optimal;

Loading…
Cancel
Save