Skip to content

Commit 5bb4074

Browse files
committed
tweak wakeup behavior
1 parent ee702b5 commit 5bb4074

File tree

2 files changed

+12
-16
lines changed

2 files changed

+12
-16
lines changed

src/hhd/device/claw/__init__.py

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def __init__(self, dmi: str, dconf: dict) -> None:
2929
self.t = None
3030
self.should_exit = None
3131
self.updated = Event()
32-
self.woke_up = Event()
3332
self.started = False
3433
self.t = None
3534

@@ -45,7 +44,6 @@ def open(
4544
self.emit = emit
4645
self.context = context
4746
self.prev = None
48-
self.woke_up.set()
4947

5048
def settings(self) -> HHDSettings:
5149
base = {"controllers": {"claw": load_relative_yaml("controllers.yml")}}
@@ -90,7 +88,6 @@ def start(self, conf):
9088
self.should_exit,
9189
self.updated,
9290
self.dconf,
93-
self.woke_up,
9491
),
9592
)
9693
self.t.start()
@@ -103,14 +100,6 @@ def close(self):
103100
self.should_exit = None
104101
self.t = None
105102

106-
def notify(self, events):
107-
for ev in events:
108-
if ev["type"] == "special" and ev.get("event", None) == "wakeup":
109-
logger.info(
110-
f"Woke up from sleep, setting controller to Dinput mode."
111-
)
112-
self.woke_up.set()
113-
114103

115104
def autodetect(existing: Sequence[HHDPlugin]) -> Sequence[HHDPlugin]:
116105
if len(existing):

src/hhd/device/claw/base.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,6 @@ def plugin_run(
167167
should_exit: TEvent,
168168
updated: TEvent,
169169
dconf: dict,
170-
woke_up: TEvent,
171170
):
172171
first = True
173172
first_disabled = True
@@ -223,7 +222,7 @@ def plugin_run(
223222
logger.info("Launching emulated controller.")
224223
updated.clear()
225224
init = time.perf_counter()
226-
controller_loop(conf.copy(), should_exit, updated, dconf, emit, woke_up)
225+
controller_loop(conf.copy(), should_exit, updated, dconf, emit)
227226
repeated_fail = False
228227
except Exception as e:
229228
failed_fast = init + LONGER_ERROR_MARGIN > time.perf_counter()
@@ -252,7 +251,6 @@ def controller_loop(
252251
updated: TEvent,
253252
dconf: dict,
254253
emit: Emitter,
255-
woke_up: TEvent,
256254
):
257255
debug = DEBUG_MODE
258256

@@ -366,6 +364,7 @@ def prepare(m):
366364
prepare(d_vend)
367365

368366
logger.info("Emulated controller launched, have fun!")
367+
prev = 0
369368
while not should_exit.is_set() and not updated.is_set():
370369
start = time.perf_counter()
371370
# Add timeout to call consumers a minimum amount of times per second
@@ -379,9 +378,17 @@ def prepare(m):
379378
if id(d) in to_run:
380379
evs.extend(d.produce(r))
381380

382-
if woke_up.is_set():
383-
woke_up.clear()
381+
if start - prev > 1:
382+
# After wakeup, the controller waits a bit until it
383+
# realizes it woke up and switches to desktop mode.
384+
# Therefore we need to wait otherwise we race it and
385+
# end up stuck in desktop mode.
386+
time.sleep(2)
387+
logger.info("Setting controller to dinput mode.")
384388
d_vend.set_dinput_mode()
389+
prev = time.perf_counter()
390+
else:
391+
prev = start
385392

386393
evs = multiplexer.process(evs)
387394
if evs:

0 commit comments

Comments
 (0)