From 02f98a01afda9112e22b3f40afacb7e89a237aca Mon Sep 17 00:00:00 2001 From: Petri Hintukainen Date: Wed, 16 Jan 2013 15:31:01 +0200 Subject: opengl2: Moved argb layer locking to more correct place --- src/video_out/video_out_opengl2.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/video_out/video_out_opengl2.c b/src/video_out/video_out_opengl2.c index 6326aebce..f3ff57e7c 100644 --- a/src/video_out/video_out_opengl2.c +++ b/src/video_out/video_out_opengl2.c @@ -632,12 +632,8 @@ static int opengl2_process_rgba_ovl( opengl2_driver_t *this_gen, vo_overlay_t *o ovl->vid_scale = 0; ovl->type = GL_BGRA; - pthread_mutex_lock(&overlay->argb_layer->mutex); - memcpy(ovl->ovl_rgba, overlay->argb_layer->buffer, overlay->width * overlay->height * 4); - pthread_mutex_unlock(&overlay->argb_layer->mutex); - return 1; } @@ -661,8 +657,15 @@ static void opengl2_overlay_blend (vo_driver_t *this_gen, vo_frame_t *frame_gen, return; if (overlay->argb_layer && overlay->argb_layer->buffer) { - if ( opengl2_process_rgba_ovl( this, overlay ) ) - ++this->ovl_changed; + + pthread_mutex_lock(&overlay->argb_layer->mutex); /* buffer can be changed or freed while unlocked */ + + if (overlay->argb_layer->buffer) { + if ( opengl2_process_rgba_ovl( this, overlay ) ) + ++this->ovl_changed; + } + + pthread_mutex_unlock(&overlay->argb_layer->mutex); } else if (overlay->rle) { -- cgit v1.2.3