@@ -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