diff --git a/app/src/main/java/com/lazy/emulate/ui/screens/game/GameScreen.kt b/app/src/main/java/com/lazy/emulate/ui/screens/game/GameScreen.kt index d9a2e77..1b98ea5 100644 --- a/app/src/main/java/com/lazy/emulate/ui/screens/game/GameScreen.kt +++ b/app/src/main/java/com/lazy/emulate/ui/screens/game/GameScreen.kt @@ -90,6 +90,15 @@ fun GameScreen( var displayMode by remember { mutableStateOf(preferencesManager.displayMode) } var loadError by remember { mutableStateOf(null) } var surfaceViewRef by remember { mutableStateOf(null) } + var isExiting by remember { mutableStateOf(false) } + + val safeBack: () -> Unit = { + if (!isExiting) { + isExiting = true + core?.pause() + onBack() + } + } // Launch menu: shown before emulation starts if saves exist var showLaunchMenu by remember { mutableStateOf(true) } @@ -172,7 +181,7 @@ fun GameScreen( pendingLoadSlot = -1 showLaunchMenu = false }, - onBack = onBack + onBack = safeBack ) } else { // Emulation surface @@ -240,7 +249,7 @@ fun GameScreen( // HUD controls (hidden when game menu is open) if (!showGameMenu) { IconButton( - onClick = onBack, + onClick = safeBack, modifier = Modifier .align(Alignment.TopStart) .padding(8.dp)