put sessions = AudioUtilities.GetAllSessions() on another thread

This commit is contained in:
Michael Mikovsky
2024-06-02 14:11:43 -06:00
committed by GitHub
parent a09a848e59
commit e9ece2771a
+17 -2
View File
@@ -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()