diff options
author | Carsten Haitzler <raster@rasterman.com> | 2012-06-30 05:32:04 +0000 |
---|---|---|
committer | Carsten Haitzler <raster@rasterman.com> | 2012-06-30 05:32:04 +0000 |
commit | 5fca99d055af5b5f96b90c7abbe8801522c79c43 (patch) | |
tree | fe5c12e5829b478afeaf03a94caed9fcdd7c66b1 | |
parent | 0a213bd7f4e79a9fb792ce69d6ff4910f57fe137 (diff) | |
download | evas_generic_loaders-5fca99d055af5b5f96b90c7abbe8801522c79c43.tar.gz |
add gst loader timeout.
SVN revision: 73071
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | src/bin/gst/main.c | 15 |
2 files changed, 21 insertions, 0 deletions
@@ -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)) |