Fix freeze when using BypassWindowManagerHint

Shell surfaces are now created for windows with BypassWindowManager
set, unless the environment variable
QT_WAYLAND_USE_BYPASSWINDOWMANAGERHINT is also set.

This means that in case you need a window to not create a wayland
shell_surface (perhaps because you do not want to use wl_shell or
xdg_shell), you can set the environment variable and get the same
behavior as before. Meaning the surfaces of windows with the flag set
will not be assigned a role.

Task-number: QTBUG-49272
Change-Id: Idf969540497d6b4e54395b97472d99d2e068be93
Reviewed-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Reviewed-by: Pier Luigi Fiorini <pierluigi.fiorini@gmail.com>
This commit is contained in:
Johan Klokkhammer Helsing 2016-02-10 12:51:26 +01:00 committed by Johan Helsing
parent 4c0a1bc3b0
commit c70987cd65

View File

@ -122,7 +122,8 @@ void QWaylandWindow::initWindow()
if (::wl_subsurface *ss = mDisplay->createSubSurface(this, p)) { if (::wl_subsurface *ss = mDisplay->createSubSurface(this, p)) {
mSubSurfaceWindow = new QWaylandSubSurface(this, p, ss); mSubSurfaceWindow = new QWaylandSubSurface(this, p, ss);
} }
} else if (!(window()->flags() & Qt::BypassWindowManagerHint)) { } else if (!(qEnvironmentVariableIsSet("QT_WAYLAND_USE_BYPASSWINDOWMANAGERHINT") &&
window()->flags() & Qt::BypassWindowManagerHint)) {
mShellSurface = mDisplay->createShellSurface(this); mShellSurface = mDisplay->createShellSurface(this);
} }