Skip to content

Commit 9055297

Browse files
Merge pull request #5 from NullPointerDepressiveDisorder/copilot/sub-pr-4
Fix double registration of default multitouch device
2 parents 2b6c267 + cce3a91 commit 9055297

1 file changed

Lines changed: 14 additions & 7 deletions

File tree

MiddleDrag/Managers/DeviceMonitor.swift

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ class DeviceMonitor {
7070
Log.info("DeviceMonitor starting...", category: .device)
7171

7272
var deviceCount = 0
73+
var registeredDevices: Set<UnsafeMutableRawPointer> = []
7374

7475
// Try to get all devices
7576
if let deviceList = MTDeviceCreateList() {
@@ -82,6 +83,7 @@ class DeviceMonitor {
8283
let deviceRef = UnsafeMutableRawPointer(mutating: dev)
8384
MTRegisterContactFrameCallback(deviceRef, deviceContactCallback)
8485
MTDeviceStart(deviceRef, 0)
86+
registeredDevices.insert(deviceRef)
8587
deviceCount += 1
8688

8789
if device == nil {
@@ -93,14 +95,19 @@ class DeviceMonitor {
9395
Log.warning("MTDeviceCreateList returned nil, trying default device", category: .device)
9496
}
9597

96-
// Also try the default device
98+
// Also try the default device if not already registered
9799
if let defaultDevice = MultitouchFramework.shared.getDefaultDevice() {
98-
MTRegisterContactFrameCallback(defaultDevice, deviceContactCallback)
99-
MTDeviceStart(defaultDevice, 0)
100-
deviceCount += 1
101-
102-
if device == nil {
103-
device = defaultDevice
100+
if !registeredDevices.contains(defaultDevice) {
101+
MTRegisterContactFrameCallback(defaultDevice, deviceContactCallback)
102+
MTDeviceStart(defaultDevice, 0)
103+
registeredDevices.insert(defaultDevice)
104+
deviceCount += 1
105+
106+
if device == nil {
107+
device = defaultDevice
108+
}
109+
} else {
110+
Log.debug("Default device already registered from device list", category: .device)
104111
}
105112
}
106113

0 commit comments

Comments
 (0)