summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-ximpressive-display/bin/impressive-display74
1 files changed, 62 insertions, 12 deletions
diff --git a/impressive-display/bin/impressive-display b/impressive-display/bin/impressive-display
index a9a0512..5bd2a28 100755
--- a/impressive-display/bin/impressive-display
+++ b/impressive-display/bin/impressive-display
@@ -1,6 +1,6 @@
#!/bin/bash
-set -x
+# set -x
# Copyright (C) 2012-2016 by Debian Edu project, http://wiki.debian.org/DebianEdu
# Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
@@ -47,7 +47,6 @@ PDF_URL_SLAVES=""
PDF_URL_MASTERS_CREDS=""
PDF_URL_SLAVES_CREDS=""
-
PDF_FILE_MASTERS=""
PDF_FILE_SLAVES=""
@@ -147,12 +146,16 @@ if [ -n "$HTTP_PROXY_URL" ]; then
export ftp_proxy="$HTTP_PROXY_URL"
fi
+IMPRESSIVE_PID=""
+
WORKDIR="$HOME/.impressive-display-data"
LOOPFILE="$WORKDIR/PDFFILE_DOWNLOAD_LOOP_ACTIVE"
mkdir -p "$WORKDIR"
-function stop_pdfdownload_loop {
- rm -f ~/PDFDOWNLOAD_LOOP
+function cleanup {
+ rm -f "$WORKDIR/PDFDOWNLOAD_LOOP"
+ rm -f "$WORKDIR/IMPRESSIVE_ACTIVE"
+ rm -f "$WORKDIR/IMPRESSIVE_EXIT"
}
function pdf_is_portrait {
@@ -184,16 +187,63 @@ function merge_portrait_documents {
cd $WORKDIR && pdfnup "$WORKDIR/impressive-pdffile.pdf" && cd - 1>/dev/null
mv "$WORKDIR/impressive-pdffile-nup.pdf" "$WORKDIR/impressive-pdffile-display.pdf"
else
- mv "$WORKDIR/impressive-pdffile.pdf" "$WORKDIR/impressive-pdffile-display.pdf"
+ cp "$WORKDIR/impressive-pdffile.pdf" "$WORKDIR/impressive-pdffile-display.pdf"
fi
}
function download_pdffile {
+ if [ -r "$WORKDIR/impressive-pdffile.pdf" ]; then
+ cp "$WORKDIR/impressive-pdffile.pdf" "$WORKDIR/impressive-pdffile-previous.pdf"
+ fi
if [ -n "$PDF_URL_CREDS" ]; then
creds="-u $PDF_URL_CREDS"
fi
curl $creds "$PDF_URL" 1> "$WORKDIR/impressive-pdffile.pdf" 2>/dev/null
merge_portrait_documents
+
+ cmp -s "$WORKDIR/impressive-pdffile.pdf" "$WORKDIR/impressive-pdffile-previous.pdf"> /dev/null
+ if [ $? -eq 1 ]; then
+ rm -f "$WORKDIR/IMPRESSIVE_ACTIVE"
+ fi
+}
+
+function reloadable_impressive {
+
+ # on GL systems add: --supersample -k
+ if which impressive 1>/dev/null; then
+
+ fade_options="--transition None"
+
+ while [ ! -e "$WORKDIR/IMPRESSIVE_EXIT" ]; do
+ impressive ${fade_options} --fake-fullscreen --wrap -a ${SLIDE_DURATION} --nologo "${pdffile}" 1>/dev/null &
+ IMPRESSIVE_PID=$!
+
+ touch "$WORKDIR/IMPRESSIVE_ACTIVE"
+ while [ -e "$WORKDIR/IMPRESSIVE_ACTIVE" ]; do
+ sleep 1
+
+ if [ -e "$WORKDIR/IMPRESSIVE_EXIT" ]; then
+ break
+ fi
+
+ done
+ kill $IMPRESSIVE_PID
+ rm "$WORKDIR/IMPRESSIVE_ACTIVE"
+ done
+ fi
+}
+
+function close_other_impressive_display {
+
+ # if we see another active impressive-display instance, trigger its exit...
+ if [ -e "$WORKDIR/IMPRESSIVE_ACTIVE" ]; then
+ touch "$WORKDIR/IMPRESSIVE_EXIT"
+ fi
+
+ # wait for other impressive-display instance to disappear
+ while [ -e "$WORKDIR/IMPRESSIVE_ACTIVE" ]; do
+ sleep 1
+ done
}
# do an initial PDF retrieval..
@@ -201,13 +251,13 @@ if [ -n "$PDF_URL" ]; then
download_pdffile
- trap "stop_pdfdownload_loop" SIGINT SIGTERM ERR
+ trap "cleanup" SIGINT SIGTERM ERR
if [ "x$DOWNLOAD_INTERVAL" != "x0" ]; then
touch $LOOPFILE
(
while true; do
- if [ ! -e $LOOPFILE ]; then
+ if [ ! -e $LOOPFILE ] || [ -e $WORKDIR/IMPRESSIVE_EXIT ]; then
break
else
sleep $DOWNLOAD_INTERVAL
@@ -243,11 +293,11 @@ if [ -n "$pdffile" ]; then
fade_options="--transition None"
- # on GL systems add: --supersample -k
- if which impressive 1>/dev/null; then
- impressive ${fade_options} --fake-fullscreen --wrap --poll 30 -a ${SLIDE_DURATION} --nologo "${pdffile}" 1>/dev/null
- fi
- stop_pdfdownload_loop
+ close_other_impressive_display
+
+ reloadable_impressive
+
+ cleanup
fi