Ver código fonte

Fix infinite wait

penta 4 semanas atrás
pai
commit
035a4c365c
1 arquivos alterados com 16 adições e 12 exclusões
  1. 16 12
      scripts/gaming-mode-enter

+ 16 - 12
scripts/gaming-mode-enter

@@ -9,7 +9,6 @@ log() {
     printf '[%s] [ENTER] %s\n' "$(date '+%Y-%m-%d %H:%M:%S')" "$*" >> "${LOG_FILE}"
 }
 
-# Récupère l'environnement réel de la session XFCE.
 import_xfce_environment() {
     local session_pid
     local entry
@@ -27,9 +26,10 @@ import_xfce_environment() {
     fi
 }
 
+log "Starting gaming-mode-enter"
+
 import_xfce_environment
 
-# Fallback correspondant à notre stack actuelle.
 export DISPLAY="${DISPLAY:-:20}"
 
 STATE_DIR="${XDG_RUNTIME_DIR:-/tmp}/sunshine-gaming-mode"
@@ -37,28 +37,34 @@ STATE_FILE="${STATE_DIR}/xfce-state"
 
 mkdir -p "${STATE_DIR}"
 
-log "Entering gaming mode on DISPLAY=${DISPLAY}"
-
 desktop_was_running=0
 panel_was_running=0
 
 if pgrep -u "$(id -u)" -x xfdesktop >/dev/null 2>&1; then
     desktop_was_running=1
 
-    log "Stopping xfdesktop"
-    xfdesktop --quit >/dev/null 2>&1 || true
+    log "Stopping xfdesktop..."
+    timeout 2s xfdesktop --quit >/dev/null 2>&1 || \
+        log "xfdesktop --quit timed out or returned an error"
+
+    log "xfdesktop step completed"
 fi
 
 if pgrep -u "$(id -u)" -x xfce4-panel >/dev/null 2>&1; then
     panel_was_running=1
 
-    log "Stopping xfce4-panel"
-    xfce4-panel --quit >/dev/null 2>&1 || true
+    log "Stopping xfce4-panel..."
+    timeout 2s xfce4-panel -q >/dev/null 2>&1 || \
+        log "xfce4-panel -q timed out or returned an error"
+
+    log "xfce4-panel step completed"
 fi
 
-# Laisse un fond propre pendant le lancement du jeu.
 if command -v xsetroot >/dev/null 2>&1; then
-    xsetroot -solid black >/dev/null 2>&1 || true
+    log "Setting root background to black"
+
+    timeout 2s xsetroot -solid black >/dev/null 2>&1 || \
+        log "xsetroot timed out or returned an error"
 fi
 
 cat > "${STATE_FILE}" <<EOF
@@ -67,6 +73,4 @@ panel=${panel_was_running}
 EOF
 
 log "Gaming mode enabled"
-
-# Ne jamais empêcher Sunshine de lancer le jeu.
 exit 0