From 3b5257f17081cae2c0ea7d1dc112483f9465659b Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 04:02:06 +0000 Subject: [PATCH 1/2] Initial plan From cce3a91434589f7b716ed3fa002af2925f521e96 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 4 Dec 2025 04:05:13 +0000 Subject: [PATCH 2/2] fix(device): Prevent double registration of default multitouch device Co-authored-by: NullPointerDepressiveDisorder <96403086+NullPointerDepressiveDisorder@users.noreply.github.com> --- MiddleDrag/Managers/DeviceMonitor.swift | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/MiddleDrag/Managers/DeviceMonitor.swift b/MiddleDrag/Managers/DeviceMonitor.swift index b84e6c9..b50a5ae 100644 --- a/MiddleDrag/Managers/DeviceMonitor.swift +++ b/MiddleDrag/Managers/DeviceMonitor.swift @@ -70,6 +70,7 @@ class DeviceMonitor { Log.info("DeviceMonitor starting...", category: .device) var deviceCount = 0 + var registeredDevices: Set = [] // Try to get all devices if let deviceList = MTDeviceCreateList() { @@ -82,6 +83,7 @@ class DeviceMonitor { let deviceRef = UnsafeMutableRawPointer(mutating: dev) MTRegisterContactFrameCallback(deviceRef, deviceContactCallback) MTDeviceStart(deviceRef, 0) + registeredDevices.insert(deviceRef) deviceCount += 1 if device == nil { @@ -93,14 +95,19 @@ class DeviceMonitor { Log.warning("MTDeviceCreateList returned nil, trying default device", category: .device) } - // Also try the default device + // Also try the default device if not already registered if let defaultDevice = MultitouchFramework.shared.getDefaultDevice() { - MTRegisterContactFrameCallback(defaultDevice, deviceContactCallback) - MTDeviceStart(defaultDevice, 0) - deviceCount += 1 - - if device == nil { - device = defaultDevice + if !registeredDevices.contains(defaultDevice) { + MTRegisterContactFrameCallback(defaultDevice, deviceContactCallback) + MTDeviceStart(defaultDevice, 0) + registeredDevices.insert(defaultDevice) + deviceCount += 1 + + if device == nil { + device = defaultDevice + } + } else { + Log.debug("Default device already registered from device list", category: .device) } }