From e9ece2771aca26e085e9a7a9dfa8c7ed53db0546 Mon Sep 17 00:00:00 2001 From: Michael Mikovsky <77305074+Astatin3@users.noreply.github.com> Date: Sun, 2 Jun 2024 14:11:43 -0600 Subject: [PATCH] put sessions = AudioUtilities.GetAllSessions() on another thread --- volume.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/volume.py b/volume.py index 8039a3c..d602624 100755 --- a/volume.py +++ b/volume.py @@ -23,9 +23,11 @@ SLIDER_VALS = [ } ] +import time import math import subprocess from serial import Serial +from threading import Thread from comtypes import CLSCTX_ALL from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume, ISimpleAudioVolume @@ -33,13 +35,21 @@ devices = AudioUtilities.GetSpeakers() interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) masterVolume = interface.QueryInterface(IAudioEndpointVolume) +sessions = None + +def device_update_thread(): + global sessions + while True: + sessions = AudioUtilities.GetAllSessions() + time.sleep(1) + def setMasterVolume(num: int): if num < 0 or num > 100: return masterVolume.SetMasterVolumeLevelScalar((num/100), None) def setProgramVolume(num: int, program: str): - if num < 0 or num > 100: return - sessions = AudioUtilities.GetAllSessions() + if num < 0 or num > 100: return + if sessions is None: return for session in sessions: volume = session._ctl.QueryInterface(ISimpleAudioVolume) if session.Process and session.Process.name() == program: @@ -91,6 +101,9 @@ serial_ports() ser = Serial(SERIAL_PORT, SERIAL_BUAD_RATE) +sessions_thread = Thread(target = device_update_thread) +sessions_thread.start() + while ser.is_open: cc=str(ser.readline()) val = cc[2:][:-5].split('|') @@ -101,3 +114,5 @@ while ser.is_open: case 1: # Slider level = (int(val[2])/1024)*100 handle_slider(int(val[1]), level) + +sessions_thread.join()