From 5671e45d91500de5dd0f43ffe765aa4e3ab0e871 Mon Sep 17 00:00:00 2001 From: Martin Pulec Date: Wed, 28 Dec 2011 18:18:42 +0100 Subject: [PATCH] fixes --- ultragrid/src/audio/audio.c | 6 ++++-- ultragrid/src/video_display.c | 2 +- ultragrid/src/video_display/gl.c | 9 +++++++++ ultragrid/src/video_display/gl.h | 1 + ultragrid/src/video_display/sage.h | 2 +- 5 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ultragrid/src/audio/audio.c b/ultragrid/src/audio/audio.c index 17dea0120..f4748aeb2 100644 --- a/ultragrid/src/audio/audio.c +++ b/ultragrid/src/audio/audio.c @@ -384,8 +384,10 @@ error: void audio_join(struct state_audio *s) { if(s) { - pthread_join(s->audio_receiver_thread_id, NULL); - pthread_join(s->audio_sender_thread_id, NULL); + if(s->audio_receiver_thread_id) + pthread_join(s->audio_receiver_thread_id, NULL); + if(s->audio_sender_thread_id) + pthread_join(s->audio_sender_thread_id, NULL); } } diff --git a/ultragrid/src/video_display.c b/ultragrid/src/video_display.c index 18cf69266..d4f18f5d3 100644 --- a/ultragrid/src/video_display.c +++ b/ultragrid/src/video_display.c @@ -110,7 +110,7 @@ static display_table_t display_device_table[] = { display_gl_init, display_gl_run, display_gl_done, - NULL, + display_gl_finish, display_gl_getf, display_gl_putf, display_gl_reconfigure, diff --git a/ultragrid/src/video_display/gl.c b/ultragrid/src/video_display/gl.c index 27d4cdc2c..23c9f13d8 100644 --- a/ultragrid/src/video_display/gl.c +++ b/ultragrid/src/video_display/gl.c @@ -987,6 +987,15 @@ void display_gl_done(void *state) free(s); } +void display_gl_finish(void *state) +{ + struct state_gl *s = (struct state_gl *) state; + + assert(s->magic == MAGIC_GL); + + s->processed = TRUE; +} + struct video_frame * display_gl_getf(void *state) { struct state_gl *s = (struct state_gl *) state; diff --git a/ultragrid/src/video_display/gl.h b/ultragrid/src/video_display/gl.h index fb46a0e34..c4bacb783 100644 --- a/ultragrid/src/video_display/gl.h +++ b/ultragrid/src/video_display/gl.h @@ -56,6 +56,7 @@ display_type_t *display_gl_probe(void); void *display_gl_init(char *fmt, unsigned int flags); void display_gl_run(void *state); void display_gl_done(void *state); +void display_gl_finish(void *state); struct video_frame *display_gl_getf(void *state); int display_gl_putf(void *state, char *frame); int display_gl_reconfigure(void *state, struct video_desc desc); diff --git a/ultragrid/src/video_display/sage.h b/ultragrid/src/video_display/sage.h index d7877a1f9..1b27dc638 100644 --- a/ultragrid/src/video_display/sage.h +++ b/ultragrid/src/video_display/sage.h @@ -56,7 +56,7 @@ void display_sage_run(void *state); void display_sage_done(void *state); struct video_frame *display_sage_getf(void *state); int display_sage_putf(void *state, char *frame); -void display_sage_reconfigure(void *state, struct video_desc desc); +int display_sage_reconfigure(void *state, struct video_desc desc); int display_sage_get_property(void *state, int property, void *val, size_t *len); int display_sage_handle_events(void);