Run KVM switch in background and target DDM by monitor model
This commit is contained in:
+11
-5
@@ -117,10 +117,15 @@ class KvmSwitcherService:
|
||||
errors.extend(config.validate())
|
||||
|
||||
ddm_slot = self.ddm_backend.resolve_alienware_slot(force=False)
|
||||
ddm_ready = self.ddm_backend.is_available() and ddm_slot is not None
|
||||
supports_monitor_targeting = bool(
|
||||
getattr(self.ddm_backend, "supports_monitor_targeting", lambda: False)()
|
||||
)
|
||||
ddm_ready = self.ddm_backend.is_available() and (
|
||||
ddm_slot is not None or supports_monitor_targeting
|
||||
)
|
||||
if not self.ddm_backend.is_available():
|
||||
errors.append("DDM.exe was not found.")
|
||||
elif ddm_slot is None:
|
||||
elif ddm_slot is None and not supports_monitor_targeting:
|
||||
errors.append("Alienware DDM slot could not be resolved.")
|
||||
|
||||
resolved_target, desired_port = self._resolve_target(config, scan)
|
||||
@@ -132,7 +137,7 @@ class KvmSwitcherService:
|
||||
not errors
|
||||
and desired_port is not None
|
||||
and scan.alienware_input_code is not None
|
||||
and ddm_slot is not None
|
||||
and ddm_ready
|
||||
and scan.samsung_present
|
||||
and not self._samsung_session_successful
|
||||
and self._samsung_session_attempt_count < 3
|
||||
@@ -229,7 +234,7 @@ class KvmSwitcherService:
|
||||
|
||||
def _attempt_switch_sequence(
|
||||
self,
|
||||
ddm_slot: int,
|
||||
ddm_slot: int | None,
|
||||
desired_port: str,
|
||||
scan: HardwareScan,
|
||||
last_switch_at: str | None,
|
||||
@@ -241,7 +246,8 @@ class KvmSwitcherService:
|
||||
self._samsung_session_attempted = True
|
||||
self._samsung_session_attempt_count += 1
|
||||
|
||||
result = self.ddm_backend.switch_to_port(ddm_slot, desired_port)
|
||||
switch_slot = ddm_slot if ddm_slot is not None else 0
|
||||
result = self.ddm_backend.switch_to_port(switch_slot, desired_port)
|
||||
if not result.success:
|
||||
errors.append(result.message)
|
||||
self.ddm_backend.invalidate_slot()
|
||||
|
||||
Reference in New Issue
Block a user