version semi final
demasiadas cosas, generalmente mas menus y funciones varias
This commit is contained in:
105
PACKAGE/Windows/Engine/Extras/GPUDumpViewer/OpenGPUDumpViewer.sh
Normal file
105
PACKAGE/Windows/Engine/Extras/GPUDumpViewer/OpenGPUDumpViewer.sh
Normal file
@@ -0,0 +1,105 @@
|
||||
#!/usr/bin/env bash
|
||||
# Copyright Epic Games, Inc. All Rights Reserved.
|
||||
|
||||
set -eu
|
||||
|
||||
UNAMEOS="$(uname -s)"
|
||||
ADDRESS="127.0.0.1"
|
||||
PORT="8000"
|
||||
URL="http://$ADDRESS:$PORT/GPUDumpViewer.html"
|
||||
|
||||
SCRIPT=$(readlink -f "$0")
|
||||
# Absolute path this script is in, thus /home/user/bin
|
||||
SCRIPTPATH=$(dirname "$SCRIPT")
|
||||
|
||||
pushd "$SCRIPTPATH"
|
||||
|
||||
|
||||
GetAllChildProcesses() {
|
||||
local Children=$(ps -o pid= ppid "$1")
|
||||
|
||||
for PID in $Children
|
||||
do
|
||||
GetAllChildProcesses "$PID"
|
||||
done
|
||||
|
||||
echo "$Children"
|
||||
}
|
||||
|
||||
# Gather all the descendant children of this process, and first kill -TERM. If any child process
|
||||
# is still alive finally send a -KILL
|
||||
TermHandler() {
|
||||
MaxWait=30
|
||||
CurrentWait=0
|
||||
|
||||
ProcessesToKill=$(GetAllChildProcesses $$)
|
||||
kill -s TERM $ProcessesToKill 2> /dev/null
|
||||
|
||||
ProcessesStillAlive=$(ps -o pid= -p $ProcessesToKill)
|
||||
|
||||
# Wait until all the processes have been gracefully killed, or max Wait time
|
||||
while [ -n "$ProcessesStillAlive" ] && [ "$CurrentWait" -lt "$MaxWait" ]
|
||||
do
|
||||
CurrentWait=$((CurrentWait + 1))
|
||||
sleep 1
|
||||
|
||||
ProcessesStillAlive=$(ps -o pid= -p $ProcessesToKill)
|
||||
done
|
||||
|
||||
# If some processes are still alive after MaxWait, lets just force kill them
|
||||
if [ -n "$ProcessesStillAlive" ]; then
|
||||
kill -s KILL $ProcessesStillAlive 2> /dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
# trap when SIGINT or SIGTERM are received with a custom function
|
||||
trap TermHandler SIGTERM SIGINT
|
||||
|
||||
APPS=()
|
||||
APPS+=(xdg-open)
|
||||
|
||||
if [[ "${UNAMEOS}" =~ "Darwin" ]]; then
|
||||
APPS+=(open)
|
||||
fi
|
||||
|
||||
CMD=
|
||||
for val in "${APPS[@]}"; do
|
||||
CMD="$(command -v "${val}")" || true
|
||||
if [[ -n "${CMD}" ]]; then
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [[ -z "${CMD}" ]]; then
|
||||
echo "ERROR: Browser launch command not found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ARGS=("${CMD}")
|
||||
|
||||
ARGS+=("$URL")
|
||||
|
||||
echo "Executing:"
|
||||
echo
|
||||
|
||||
echo "Starting simple webserver..."
|
||||
exec python3 -m http.server "$PORT" --bind "$ADDRESS" &
|
||||
P1=$!
|
||||
sleep 1
|
||||
|
||||
echo "${ARGS[0]} \\"
|
||||
for ((i=1; i < ${#ARGS[@]}; i++ )); do
|
||||
echo " ${ARGS[$i]} \\";
|
||||
done
|
||||
echo
|
||||
|
||||
# Start the browser now that the server is running
|
||||
"${ARGS[@]}"
|
||||
|
||||
# Wait on the webserver - in general this will be killed by a Ctrl-C
|
||||
wait $P1
|
||||
|
||||
echo
|
||||
echo "Closing ${CMD}..."
|
||||
|
||||
popd
|
||||
Reference in New Issue
Block a user