summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler <raster@rasterman.com>2012-06-30 05:32:04 +0000
committerCarsten Haitzler <raster@rasterman.com>2012-06-30 05:32:04 +0000
commit5fca99d055af5b5f96b90c7abbe8801522c79c43 (patch)
treefe5c12e5829b478afeaf03a94caed9fcdd7c66b1
parent0a213bd7f4e79a9fb792ce69d6ff4910f57fe137 (diff)
downloadevas_generic_loaders-5fca99d055af5b5f96b90c7abbe8801522c79c43.tar.gz
add gst loader timeout.
SVN revision: 73071
-rw-r--r--ChangeLog6
-rw-r--r--src/bin/gst/main.c15
2 files changed, 21 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index c48c81b..f29db93 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -22,3 +22,9 @@
2012-05-06 Fanina Cristian
* Add support for Poppler 0.20.
+
+2012-06-30 Carsten Haitzler (The Rasterman)
+
+ * Add timeout (default 5 seconds) for gstreamer loader in case
+ gst hangs.
+
diff --git a/src/bin/gst/main.c b/src/bin/gst/main.c
index 1207cb4..18723ac 100644
--- a/src/bin/gst/main.c
+++ b/src/bin/gst/main.c
@@ -4,6 +4,8 @@
#include <sys/mman.h>
#include <fcntl.h>
+#include <unistd.h>
+#include <signal.h>
#include <gst/gst.h>
@@ -21,6 +23,8 @@
#define D(fmt, args...)
#endif
+#define TIMEOUT 5
+
#define CAPS "video/x-raw-rgb,bpp=(int)32,depth=(int)32,endianness=(int)4321,red_mask=(int)0x0000ff00, green_mask=(int)0x00ff0000, blue_mask=(int)0xff000000"
static GstElement *pipeline = NULL;
@@ -168,6 +172,13 @@ _gst_load_image(int size_w, int size_h)
memcpy(data, GST_BUFFER_DATA(buffer), GST_BUFFER_SIZE(buffer));
}
+static void
+timeout(int val)
+{
+ // error - timeout :(
+ exit(-7);
+}
+
int
main(int argc, char **argv)
{
@@ -209,6 +220,10 @@ main(int argc, char **argv)
}
}
+ // timeout: if we can't manage to get this done in TIMEOUT seconds, give up.
+ signal(SIGALRM, timeout);
+ alarm(TIMEOUT);
+
D("_gst_init_file\n");
if (!_gst_init(file))