mirror of
https://github.com/onyx-and-iris/voicemeeter-api-python.git
synced 2026-04-13 10:33:30 +00:00
adds a configurable timeout for login()
readme, changelog updated fixes #9
This commit is contained in:
@@ -114,6 +114,7 @@ class FactoryBase(Remote):
|
||||
"mdirty": False,
|
||||
"midi": False,
|
||||
"ldirty": False,
|
||||
"timeout": 2,
|
||||
}
|
||||
if "subs" in kwargs:
|
||||
defaultkwargs |= kwargs.pop("subs") # for backwards compatibility
|
||||
|
||||
@@ -75,11 +75,21 @@ class Remote(CBindings):
|
||||
"Voicemeeter engine running but GUI not launched. Launching the GUI now."
|
||||
)
|
||||
self.run_voicemeeter(self.kind.name)
|
||||
time.sleep(0.1)
|
||||
start = time.time()
|
||||
while True:
|
||||
try:
|
||||
time.sleep(0.1) # ensure at least 0.1 delay before clearing dirty
|
||||
self.logger.info(
|
||||
f"{type(self).__name__}: Successfully logged into {self} version {self.version}"
|
||||
)
|
||||
elapsed = time.time() - start
|
||||
self.logger.debug(f"login time: {round(elapsed, 2)}")
|
||||
break
|
||||
except CAPIError:
|
||||
if time.time() > start + self.timeout:
|
||||
raise VMError("Timeout logging into the api")
|
||||
continue
|
||||
self.clear_dirty()
|
||||
self.logger.info(
|
||||
f"{type(self).__name__}: Successfully logged into {self} version {self.version}"
|
||||
)
|
||||
|
||||
def run_voicemeeter(self, kind_id: str) -> None:
|
||||
if kind_id not in (kind.name.lower() for kind in KindId):
|
||||
@@ -89,7 +99,6 @@ class Remote(CBindings):
|
||||
else:
|
||||
value = KindId[kind_id.upper()].value
|
||||
self.call(self.bind_run_voicemeeter, value)
|
||||
time.sleep(1)
|
||||
|
||||
@property
|
||||
def type(self) -> str:
|
||||
|
||||
Reference in New Issue
Block a user