diff --git a/virtManager/details/viewers.py b/virtManager/details/viewers.py index 46ff1431f..da9f906df 100644 --- a/virtManager/details/viewers.py +++ b/virtManager/details/viewers.py @@ -476,6 +476,7 @@ class SpiceViewer(Viewer): Viewer.__init__(self, *args, **kwargs) self._spice_session = None self._display = None + self._audio = None self._main_channel = None self._display_channel = None self._usbdev_manager = None @@ -618,6 +619,14 @@ class SpiceViewer(Viewer): self._init_widget() self.emit("connected") + elif (type(channel) in [SpiceClientGLib.PlaybackChannel, + SpiceClientGLib.RecordChannel] and + not self._audio): + # It's unclear why we need this audio handle, but it + # does matter: + # https://bugzilla.redhat.com/show_bug.cgi?id=1881080 + self._audio = SpiceClientGLib.Audio.get(self._spice_session, None) + def _agent_connected_cb(self, src, val): self.emit("agent-connected") # pragma: no cover @@ -631,6 +640,7 @@ class SpiceViewer(Viewer): _SIGS.disconnect_obj_signals(self._spice_session) self._spice_session.disconnect() self._spice_session = None + self._audio = None if self._display: self._display.destroy() self._display = None