summaryrefslogtreecommitdiffstats
path: root/sys/v4l2
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-11-09 20:54:24 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2003-11-09 20:54:24 +0000
commit2ca1bfc5ab3719c351427596033f6edd4d4f9d1d (patch)
tree25217ac2191f047e591380ef565eb90003f0ae6e /sys/v4l2
parent741aa2e10837031dd5cf27e1ac45381306f623d3 (diff)
Fix device probing from multiple childs. It's done once in the parent class only now, but the childs do get the corre...
Original commit message from CVS: Fix device probing from multiple childs. It's done once in the parent class only now, but the childs do get the correct values. Also fixes an incorrect succesful state change if we opened a v4l device that doesn't have the capabilities that are needed by the plugin.
Diffstat (limited to 'sys/v4l2')
-rw-r--r--sys/v4l2/gstv4l2element.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/sys/v4l2/gstv4l2element.c b/sys/v4l2/gstv4l2element.c
index c9a8118c..53893fac 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;
}