QWaylandXdgSurface: Always clean up xdg_activation_token in more places
If the token arrives after the surface has already been destroyed, the lambda containing the deleteLater would never be called. Amends 638c9bd2595704606b53ba319c67568b479f9fc0 Pick-to: 6.9 6.8 Change-Id: Ibebeb441d9c115b0203703b8042a58e986ccff47 Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org> Reviewed-by: Kai Uwe Broulik <kde@privat.broulik.de>
This commit is contained in:
parent
f646c1b30b
commit
c1a18d3edf
@ -603,11 +603,8 @@ void QWaylandXdgSurface::requestXdgActivationToken(quint32 serial)
|
|||||||
if (auto *activation = m_shell->activation()) {
|
if (auto *activation = m_shell->activation()) {
|
||||||
auto tokenProvider = activation->requestXdgActivationToken(
|
auto tokenProvider = activation->requestXdgActivationToken(
|
||||||
m_shell->m_display, m_window->wlSurface(), serial, m_appId);
|
m_shell->m_display, m_window->wlSurface(), serial, m_appId);
|
||||||
connect(tokenProvider, &QWaylandXdgActivationTokenV1::done, this,
|
connect(tokenProvider, &QWaylandXdgActivationTokenV1::done, m_window, &QWaylandWindow::xdgActivationTokenCreated);
|
||||||
[this, tokenProvider](const QString &token) {
|
connect(tokenProvider, &QWaylandXdgActivationTokenV1::done, tokenProvider, &QObject::deleteLater);
|
||||||
Q_EMIT m_window->xdgActivationTokenCreated(token);
|
|
||||||
tokenProvider->deleteLater();
|
|
||||||
});
|
|
||||||
} else {
|
} else {
|
||||||
QWaylandShellSurface::requestXdgActivationToken(serial);
|
QWaylandShellSurface::requestXdgActivationToken(serial);
|
||||||
}
|
}
|
||||||
@ -639,10 +636,10 @@ void QWaylandXdgSurface::setAlertState(bool enabled)
|
|||||||
const auto tokenProvider = activation->requestXdgActivationToken(
|
const auto tokenProvider = activation->requestXdgActivationToken(
|
||||||
m_shell->m_display, m_window->wlSurface(), std::nullopt, m_appId);
|
m_shell->m_display, m_window->wlSurface(), std::nullopt, m_appId);
|
||||||
connect(tokenProvider, &QWaylandXdgActivationTokenV1::done, this,
|
connect(tokenProvider, &QWaylandXdgActivationTokenV1::done, this,
|
||||||
[this, tokenProvider](const QString &token) {
|
[this](const QString &token) {
|
||||||
m_shell->activation()->activate(token, m_window->wlSurface());
|
m_shell->activation()->activate(token, m_window->wlSurface());
|
||||||
tokenProvider->deleteLater();
|
|
||||||
});
|
});
|
||||||
|
connect(tokenProvider, &QWaylandXdgActivationTokenV1::done, tokenProvider, &QObject::deleteLater);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString QWaylandXdgSurface::externWindowHandle()
|
QString QWaylandXdgSurface::externWindowHandle()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user