From cf0f82d8cd1236b29a07299a88784488afa4e92f Mon Sep 17 00:00:00 2001 From: kingokksa Date: Sun, 1 Nov 2026 00:37:25 +0800 Subject: [PATCH] fix(input): retry the relative mouse mode gamescope did not take The drawer state moved before the request ran, so a failed request left the two out of step and the next focus change skipped the resend. --- .../java/com/droiddeck/launcher/SessionActivity.kt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt index d4bee1692..7fefc9665 100644 --- a/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt +++ b/app/src/main/java/com/droiddeck/launcher/SessionActivity.kt @@ -219,6 +219,7 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { private var steamImportAnswered: String? = null private var directHoldBehavior by mutableStateOf(com.droiddeck.launcher.input.TouchGestureConfig.MOUSE_BEHAVIOR_CLICK) private var relativeMouseMode by mutableIntStateOf(0) + @Volatile private var appliedRelativeMouseMode: Int? = null private var screenKeyPickerOpen by mutableStateOf(false) private var screenKeyBind: List? = null private var screenKeyDir: Int? = null @@ -2793,17 +2794,16 @@ class SessionActivity : ComponentActivity(), SurfaceHolder.Callback { relativeMouseRequests.execute { val result = runCatching { AgentGuest.call(this, request, 8_000, trusted = true) } val ok = result.getOrNull()?.optBoolean("ok") == true - if (!ok) Log.w(TAG, "gamescope did not take relative mouse: ${result.exceptionOrNull() ?: result.getOrNull()}") + if (ok) appliedRelativeMouseMode = mode + else Log.w(TAG, "gamescope did not take relative mouse: ${result.exceptionOrNull() ?: result.getOrNull()}") } } private fun refreshGestureConfig() { gestureConfig = com.droiddeck.launcher.input.GesturePrefs.read(this, gestureGame) directHoldBehavior = gestureConfig.directHoldBehavior - if (relativeMouseMode != gestureConfig.relativeMouseMode) { - relativeMouseMode = gestureConfig.relativeMouseMode - setRelativeMouse(relativeMouseMode) - } + relativeMouseMode = gestureConfig.relativeMouseMode + if (appliedRelativeMouseMode != relativeMouseMode) setRelativeMouse(relativeMouseMode) gestureTouchStreamGate.reset() if (::touchscreenGestures.isInitialized) touchscreenGestures.configure(gestureConfig) if (::directTouchHold.isInitialized) directTouchHold.configure(gestureConfig)