diff --git a/sys/oss/gstosselement.c b/sys/oss/gstosselement.c index 6d1e151df3..9e1814a5fc 100644 --- a/sys/oss/gstosselement.c +++ b/sys/oss/gstosselement.c @@ -207,6 +207,7 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass, gboolean check) { static gboolean init = FALSE; + static GList *device_combinations; if (!init && !check) { gchar *dsp_base[] = { "/dev/dsp", "/dev/sound/dsp", NULL }; @@ -214,12 +215,11 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass, GstOssDeviceCombination devices[16]; gint n; - while (klass->device_combinations) { - GList *item = klass->device_combinations; + while (device_combinations) { + GList *item = device_combinations; GstOssDeviceCombination *combi = item->data; - klass->device_combinations = - g_list_remove (klass->device_combinations, item); + device_combinations = g_list_remove (device_combinations, item); g_free (combi->dsp); g_free (combi->mixer); @@ -261,8 +261,7 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass, combi->mixer = devices[n].mixer; devices[n].dsp = devices[n].mixer = NULL; - klass->device_combinations = - g_list_append (klass->device_combinations, combi); + device_combinations = g_list_append (device_combinations, combi); } } @@ -278,6 +277,8 @@ gst_osselement_class_probe_devices (GstOssElementClass *klass, init = TRUE; } + klass->device_combinations = device_combinations; + return init; } diff --git a/sys/v4l2/gstv4l2element.c b/sys/v4l2/gstv4l2element.c index c9a8118c0c..53893face1 100644 --- a/sys/v4l2/gstv4l2element.c +++ b/sys/v4l2/gstv4l2element.c @@ -125,16 +125,17 @@ gst_v4l2_class_probe_devices (GstV4l2ElementClass *klass, gboolean check) { static gboolean init = FALSE; + static GList *devices = NULL; if (!init && !check) { gchar *dev_base[] = { "/dev/video", "/dev/v4l/video", NULL }; gint base, n, fd; - while (klass->devices) { - GList *item = klass->devices; + while (devices) { + GList *item = devices; gchar *device = item->data; - klass->devices = g_list_remove (klass->devices, item); + devices = g_list_remove (devices, item); g_free (device); } @@ -153,8 +154,8 @@ gst_v4l2_class_probe_devices (GstV4l2ElementClass *klass, if (fd > 0) close (fd); - klass->devices = - g_list_append (klass->devices, + devices = + g_list_append (devices, device); break; } @@ -166,6 +167,8 @@ gst_v4l2_class_probe_devices (GstV4l2ElementClass *klass, init = TRUE; } + klass->devices = devices; + return init; }