[wayland] Ignore decoration updates if initial state isn't committed yet

or else we might send an unexpected configure event.
remotes/origin/work/fix_startup_crash
Vlad Zahorodnii 6 years ago committed by Vlad Zahorodnii
parent 1013ee1bd0
commit f7a67e0edc
  1. 10
      xdgshellclient.cpp

@ -1330,6 +1330,8 @@ void XdgToplevelClient::initialize()
bool needsPlacement = !isInitialPositionSet();
updateDecoration(false, false);
if (supportsWindowRules()) {
setupWindowRules(false);
@ -1449,13 +1451,15 @@ void XdgToplevelClient::installXdgDecoration(XdgToplevelDecorationV1Interface *d
m_xdgDecoration = decoration;
connect(m_xdgDecoration, &XdgToplevelDecorationV1Interface::destroyed, this, [this] {
if (!isClosing()) {
if (!isClosing() && m_isInitialized) {
updateDecoration(/* check_workspace_pos */ true);
}
});
connect(m_xdgDecoration, &XdgToplevelDecorationV1Interface::preferredModeChanged, this, [this] {
// force is true as we must send a new configure response.
updateDecoration(/* check_workspace_pos */ false, /* force */ true);
if (m_isInitialized) {
// force is true as we must send a new configure response.
updateDecoration(/* check_workspace_pos */ false, /* force */ true);
}
});
}

Loading…
Cancel
Save