AudioController: WIP on audio sessions discovering

This commit is contained in:
norohind 2022-11-13 16:05:39 +03:00
parent 4abc6707a3
commit 97d7714d0b
Signed by: norohind
GPG Key ID: 01C3BECC26FB59E1

View File

@ -69,23 +69,22 @@ class AudioController:
def perform_discover(self): def perform_discover(self):
logger.trace('Performing discovering') logger.trace('Performing discovering')
for session in AudioUtilities.GetAllSessions(): for session in AudioUtilities.GetAllSessions():
logger.trace(f'Checking session {session.Process} {session.ProcessId}') logger.trace(f'Checking session {session.Process}')
if session.Process is not None: if session.Process is not None:
if session.ProcessId not in self._sessions: # if session.ProcessId not in self._sessions:
logger.debug(f'Discovered session {session.Process}') logger.debug(f'Discovered session {session.Process}')
self._sessions[session.ProcessId] = session self.on_session_created(session)
self.on_session_created(session)
else: # else:
logger.trace(f'Already have session {session.Process} in _sessions') # logger.trace(f'Already have session {session.Process} in _sessions')
def on_session_created(self, new_session: AudioSession): def on_session_created(self, new_session: AudioSession):
if new_session.Process is not None: if new_session.Process is not None:
logger.debug(f'New session {new_session.Process.name()}:{new_session.ProcessId}') logger.debug(f'New session {new_session.Process}')
if new_session.ProcessId in self._sessions: if new_session.ProcessId in self._sessions:
logger.warning(f'Already have session {new_session}') logger.warning(f'Already have session {new_session.Process}, removing it first')
return self._remove_session_by_pid(new_session.ProcessId)
self._sessions[new_session.ProcessId] = new_session self._sessions[new_session.ProcessId] = new_session
new_session.register_notification(self.per_session_callbacks_class(new_session.ProcessId, self)) new_session.register_notification(self.per_session_callbacks_class(new_session.ProcessId, self))
@ -191,6 +190,7 @@ class AudioController:
# Notify ServerSideView to stop # Notify ServerSideView to stop
self.view.running = False self.view.running = False
self.view.join(1) self.view.join(1)
logger.trace(f'pre_shutdown completed')
def set_mute(self, pid: int, is_muted: bool): def set_mute(self, pid: int, is_muted: bool):
logger.trace(f'Set mute for {pid} {is_muted=}') logger.trace(f'Set mute for {pid} {is_muted=}')