fix: disconnect portal selection-transfer from parent session
Wrong session logged a glib critical on teardown.
This commit is contained in:
parent
f0f3428d50
commit
4cb5c3ec9c
2 changed files with 7 additions and 6 deletions
|
|
@ -519,10 +519,8 @@ int ServerApp::mainLoop()
|
||||||
try {
|
try {
|
||||||
appUtil().startNode();
|
appUtil().startNode();
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
// a fatal startup failure (e.g. the listen address is already in use)
|
// a fatal startup failure exits by throwing, skipping the cleanup below;
|
||||||
// exits by throwing, which unwinds past the cleanup at the end of this
|
// tear down here so the screen's worker threads don't outlive the app.
|
||||||
// function. tear the server down here so the screen and its worker
|
|
||||||
// threads don't outlive the app and call into freed globals on exit.
|
|
||||||
cleanupServer();
|
cleanupServer();
|
||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -205,12 +205,15 @@ PortalInputCapture::~PortalInputCapture()
|
||||||
if (m_session) {
|
if (m_session) {
|
||||||
using enum Signal;
|
using enum Signal;
|
||||||
XdpSession *parentSession = xdp_input_capture_session_get_session(m_session);
|
XdpSession *parentSession = xdp_input_capture_session_get_session(m_session);
|
||||||
g_signal_handler_disconnect(G_OBJECT(parentSession), m_signals.at(SessionClosed));
|
if (m_signals.at(SessionClosed) != 0)
|
||||||
|
g_signal_handler_disconnect(parentSession, m_signals.at(SessionClosed));
|
||||||
g_signal_handler_disconnect(m_session, m_signals.at(Disabled));
|
g_signal_handler_disconnect(m_session, m_signals.at(Disabled));
|
||||||
g_signal_handler_disconnect(m_session, m_signals.at(Activated));
|
g_signal_handler_disconnect(m_session, m_signals.at(Activated));
|
||||||
g_signal_handler_disconnect(m_session, m_signals.at(Deactivated));
|
g_signal_handler_disconnect(m_session, m_signals.at(Deactivated));
|
||||||
g_signal_handler_disconnect(m_session, m_signals.at(ZonesChanged));
|
g_signal_handler_disconnect(m_session, m_signals.at(ZonesChanged));
|
||||||
g_signal_handler_disconnect(m_session, m_signals.at(SelectionTransfer));
|
#ifdef HAVE_LIBPORTAL_CLIPBOARD
|
||||||
|
g_signal_handler_disconnect(parentSession, m_signals.at(SelectionTransfer));
|
||||||
|
#endif
|
||||||
g_object_unref(m_session);
|
g_object_unref(m_session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue