glmixer: iterator didn't advance in continue statement
authorWang Xin-yu (王昕宇) <comicfans44@gmail.com>
Wed, 24 Feb 2016 02:45:17 +0000 (10:45 +0800)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 9 Dec 2017 19:32:17 +0000 (19:32 +0000)
Leading to a deadlock.

https://bugzilla.gnome.org/show_bug.cgi?id=760873

ext/gl/gstglmosaic.c
ext/gl/gstglstereomix.c
ext/gl/gstglvideomixer.c

index 83ac798..377f718 100644 (file)
@@ -299,6 +299,7 @@ gst_gl_mosaic_callback (gpointer stuff)
       GST_DEBUG ("skipping texture:%u pad:%p width:%u height %u",
           in_tex, pad, width, height);
       count++;
+      walk = g_list_next (walk);
       continue;
     }
 
index fee1080..ed604b2 100644 (file)
@@ -505,6 +505,7 @@ gst_gl_stereo_mix_process_frames (GstGLStereoMix * mixer)
 
     if (!pad || !pad->current_buffer) {
       GST_DEBUG ("skipping texture, null frame");
+      walk = g_list_next (walk);
       continue;
     }
 
index e48151b..72ad8c2 100644 (file)
@@ -1437,11 +1437,13 @@ gst_gl_video_mixer_callback (gpointer stuff)
         || pad->alpha == 0.0f) {
       GST_DEBUG ("skipping texture:%u pad:%p width:%u height:%u alpha:%f",
           mix_pad->current_texture, pad, in_width, in_height, pad->alpha);
+      walk = g_list_next (walk);
       continue;
     }
 
     if (!_set_blend_state (video_mixer, pad)) {
       GST_FIXME_OBJECT (pad, "skipping due to incorrect blend parameters");
+      walk = g_list_next (walk);
       continue;
     }