diff options
-rw-r--r-- | cerbero/packages/linux_bundle.py | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/cerbero/packages/linux_bundle.py b/cerbero/packages/linux_bundle.py index 7623d5c2..7b6c38d9 100644 --- a/cerbero/packages/linux_bundle.py +++ b/cerbero/packages/linux_bundle.py @@ -28,15 +28,33 @@ from cerbero.packages import PackagerBase LAUNCH_BUNDLE_COMMAND = """# Try to discover plugins only once +LOCKFILE="/tmp/%(appname)s-bundle.lock" +if [ -e $LOCKFILE ] +then + PID=$(cat $LOCKFILE) + if kill -0 $PID 2> /dev/null + then + echo "$? $PID pitivi already running -> exiting" + exit 1 + else + echo "Stalled process $PID allow restarting" + fi +fi +echo $$ > $LOCKFILE + PLUGINS_SYMLINK=${HOME}/.cache/gstreamer-1.0/%(appname)s-gstplugins +rm ${PLUGINS_SYMLINK} > /dev/null 2>&1 ln -s ${APPDIR}/lib/gstreamer-1.0/ ${PLUGINS_SYMLINK} if [ $? -ne 0 ]; then - echo "Bundle is already running, exiting" - exit 1 + export GST_PLUGIN_PATH=${APPDIR}/lib/gstreamer-1.0/ else export GST_PLUGIN_PATH=${PLUGINS_SYMLINK} fi +trap 'ECODE=$?; + echo "[statsgen] Removing lock. Exit: ${ETXT[ECODE]}($ECODE)" >&2 + rm "${PLUGINS_SYMLINK}" "${LOCKFILE}"' 0 + which gdk-pixbuf-query-loaders > /dev/null 2>&1 if [ $? -eq 0 ]; then export GDK_PIXBUF_MODULE_FILE=/tmp/$(basename $APPDIR).gdk-pixbuf-loader.cache |