Commit 22a1a92
PlayStation: move per-device HID state onto the device classes
Addresses DarthAffe's review feedback on PR #454 — the per-device
lifecycle state (HidStream, optional HidRawWriter, DevicePath, and
the "known disconnected" hint) was previously held in four collections
on the provider, all keyed by IRGBDevice. Moves that state onto the
DualShock4 / DualSense device classes themselves and lets each device
clean up its own I/O via Dispose.
- New IPlayStationRGBDevice interface exposes DevicePath /
IsKnownDisconnected / MarkKnownDisconnected so the provider's
hot-plug iteration can walk Devices.OfType<IPlayStationRGBDevice>()
instead of consulting a Dictionary<IRGBDevice, ...>.
- DualShock4RGBDevice and DualSenseRGBDevice each take their HidStream,
HidRawWriter? and DevicePath in the constructor, override Dispose
to send a graceful off-frame (when not known-disconnected) and
release the I/O. SuspendWrites / Shutdown are no longer needed on
the device class — MarkKnownDisconnected covers the former,
Dispose covers the latter.
- Provider drops _openStreams, _devicePaths, _rawWriters,
_confirmedDisconnected dictionaries plus the _stateLock and
_disposing flag they protected. RemoveDevice becomes a
base.RemoveDevice + device.Dispose passthrough. Reconcile and
SuspendDeadDevices iterate Devices.OfType<IPlayStationRGBDevice>()
and read .DevicePath off each. Dispose marks all owned devices
as known-disconnected before tearing them down so their off-frame
attempt is skipped at app shutdown.
No behaviour change: same hot-plug timings, same off-frame policy,
same alive-paths snapshot mechanism.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 6a3462b commit 22a1a92
4 files changed
Lines changed: 160 additions & 130 deletions
File tree
- RGB.NET.Devices.PlayStation
- DualSense
- DualShock4
- Generic
Lines changed: 35 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | | - | |
| 6 | + | |
6 | 7 | | |
7 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
8 | 12 | | |
9 | | - | |
| 13 | + | |
10 | 14 | | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
14 | 26 | | |
15 | 27 | | |
16 | 28 | | |
17 | 29 | | |
18 | 30 | | |
19 | | - | |
| 31 | + | |
20 | 32 | | |
21 | 33 | | |
22 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
23 | 38 | | |
24 | 39 | | |
25 | 40 | | |
| |||
58 | 73 | | |
59 | 74 | | |
60 | 75 | | |
61 | | - | |
62 | | - | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
63 | 92 | | |
64 | 93 | | |
65 | 94 | | |
Lines changed: 39 additions & 6 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
1 | 2 | | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | | - | |
| 6 | + | |
6 | 7 | | |
7 | | - | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
8 | 12 | | |
9 | | - | |
| 13 | + | |
10 | 14 | | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
14 | 26 | | |
15 | 27 | | |
16 | 28 | | |
17 | 29 | | |
18 | 30 | | |
19 | | - | |
| 31 | + | |
20 | 32 | | |
21 | 33 | | |
22 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
23 | 38 | | |
24 | 39 | | |
25 | 40 | | |
| |||
38 | 53 | | |
39 | 54 | | |
40 | 55 | | |
41 | | - | |
42 | | - | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
43 | 76 | | |
44 | 77 | | |
45 | 78 | | |
Lines changed: 29 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
0 commit comments