mirror of https://github.com/vitalif/openscad
Merge branch 'issue11_2' of github.com:openscad/openscad into issue11_2
commit
2346a38a24
|
@ -3,6 +3,8 @@
|
|||
# Toggle the Virtual Framebuffer
|
||||
# If started, stop. If stopped, start.
|
||||
|
||||
debug=
|
||||
|
||||
start()
|
||||
{
|
||||
if [ "`command -v Xvfb`" ]; then
|
||||
|
@ -20,7 +22,20 @@ start()
|
|||
|
||||
VFB_DISPLAY=`echo | awk 'BEGIN{srand();} {printf ":%.0f", rand()*1000+100};'`
|
||||
$VFB_BINARY $VFB_DISPLAY -screen 0 800x600x24 &> ./virtualfb.log &
|
||||
VFB_PID=$!
|
||||
# on some systems $! gives us VFB_BINARY's PID, on others we have to subtract 1
|
||||
VFB_PID_MINUS0=$!
|
||||
VFB_PID_MINUS1=$(($VFB_PID_MINUS0 - 1))
|
||||
|
||||
if [ "`ps cax | grep $VFB_PID_MINUS0 | grep $VFB_BINARY`" ]; then
|
||||
VFB_PID=$VFB_PID_MINUS0
|
||||
elif [ "`ps cax | grep $VFB_PID_MINUS1 | grep $VFB_BINARY`" ]; then
|
||||
VFB_PID=$VFB_PID_MINUS1
|
||||
else
|
||||
echo started $VFB_BINARY but cannot find process ID in process table
|
||||
echo please stop $VFB_BINARY manually
|
||||
VFB_PID=
|
||||
return
|
||||
fi
|
||||
|
||||
echo $VFB_DISPLAY > ./virtualfb.DISPLAY
|
||||
echo $VFB_PID > ./virtualfb.PID
|
||||
|
@ -48,13 +63,29 @@ isrunning()
|
|||
{
|
||||
isrunning_result=
|
||||
if [ -e ./virtualfb.PID ]; then
|
||||
if [ $debug ]; then echo "found PID file"; fi
|
||||
VFB_PID=`cat ./virtualfb.PID`
|
||||
if [ ! $VFB_PID ]; then
|
||||
echo ./virtualfb.PID contained invalid PID number
|
||||
return
|
||||
fi
|
||||
if [ $debug ]; then echo "PID from file:" $VFB_PID; fi
|
||||
PS_RESULT=`ps cax | awk ' { print $1 } '`
|
||||
GREP_RESULT=`echo $PS_RESULT | grep $VFB_PID`
|
||||
if [ $debug ]; then echo "grep ps result: " $GREP_RESULT; fi
|
||||
if [ "`ps cax | awk ' { print $1 } ' | grep ^$VFB_PID\$`" ]; then
|
||||
if [ $debug ]; then echo "found pid in process table."; fi
|
||||
isrunning_result=1
|
||||
else
|
||||
if [ $debug ]; then echo "did not find pid in process table."; fi
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "`echo $* | grep debug`" ]; then
|
||||
debug=1
|
||||
fi
|
||||
|
||||
isrunning
|
||||
if [ $isrunning_result ]; then
|
||||
stop
|
||||
|
|
Loading…
Reference in New Issue