|
@@ -25,14 +25,27 @@ error_handler() {
|
|
|
exit 1
|
|
exit 1
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-# Wait for Ryujinx to exit
|
|
|
|
|
-# NOTE: in case no fds are open, lsof could be returning with a process still living.
|
|
|
|
|
-# We wait 1s and assume the process stopped after that
|
|
|
|
|
-lsof -p $APP_PID +r 1 &>/dev/null
|
|
|
|
|
-sleep 1
|
|
|
|
|
-
|
|
|
|
|
trap 'error_handler ${LINENO}' ERR
|
|
trap 'error_handler ${LINENO}' ERR
|
|
|
|
|
|
|
|
|
|
+# Wait for Ryujinx to exit.
|
|
|
|
|
+# If the main process is still acitve, we wait for 1 second and check it again.
|
|
|
|
|
+# After the fifth time checking, this script exits with status 1.
|
|
|
|
|
+
|
|
|
|
|
+attempt=0
|
|
|
|
|
+while true; do
|
|
|
|
|
+ if lsof -p $APP_PID +r 1 &>/dev/null || ps -p "$APP_PID" &>/dev/null; then
|
|
|
|
|
+ if [ "$attempt" -eq 4 ]; then
|
|
|
|
|
+ exit 1
|
|
|
|
|
+ fi
|
|
|
|
|
+ sleep 1
|
|
|
|
|
+ else
|
|
|
|
|
+ break
|
|
|
|
|
+ fi
|
|
|
|
|
+ (( attempt++ ))
|
|
|
|
|
+done
|
|
|
|
|
+
|
|
|
|
|
+sleep 1
|
|
|
|
|
+
|
|
|
# Now replace and reopen.
|
|
# Now replace and reopen.
|
|
|
rm -rf "$INSTALL_DIRECTORY"
|
|
rm -rf "$INSTALL_DIRECTORY"
|
|
|
mv "$NEW_APP_DIRECTORY" "$INSTALL_DIRECTORY"
|
|
mv "$NEW_APP_DIRECTORY" "$INSTALL_DIRECTORY"
|