Skip to content

Commit 492dea1

Browse files
committed
pyportaltest: Allow registering a session close callback
This works around a race condition where test_close_session_signal registers a callback but on slow systems the Close signal may be sent before said callback can be registered. Note that we need to keep the returned SessionResult alive so the XdpSession isn't cleaned up by the Python GC before we finish the test. Closes #166
1 parent 0f8f627 commit 492dea1

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

tests/pyportaltest/test_remotedesktop.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ def create_session(
5656
start_session=True,
5757
persist_mode=None,
5858
restore_token=None,
59+
cb_closed_signal=None,
5960
) -> SessionSetup:
6061
params = params or {}
6162
# To make the tests easier, load ScreenCast automatically if we have
@@ -120,6 +121,9 @@ def create_session_done(portal, task, data):
120121

121122
assert session.get_session_type() == Xdp.SessionType.REMOTE_DESKTOP
122123

124+
if cb_closed_signal:
125+
session.connect("closed", cb_closed_signal)
126+
123127
if outputs:
124128
# open the PW remote by default since we need it anyway for Start()
125129
handle = session.open_pipewire_remote()
@@ -581,9 +585,6 @@ def test_close_session_signal(self):
581585
Ensure that we get the GObject signal when our session is closed
582586
externally.
583587
"""
584-
params = {"close-after-start": 500}
585-
setup = self.create_session(params=params)
586-
session = setup.session
587588

588589
session_closed_signal_received = False
589590

@@ -592,8 +593,8 @@ def session_closed(session):
592593
session_closed_signal_received = True
593594
self.mainloop.quit()
594595

595-
session.connect("closed", session_closed)
596-
596+
params = {"close-after-start": 500}
597+
_ = self.create_session(params=params, cb_closed_signal=session_closed) # keep SessionResult alive
597598
self.mainloop.run()
598599

599600
assert session_closed_signal_received is True

0 commit comments

Comments
 (0)