v4l2: don't abuse the class lock
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 7 Dec 2010 10:40:58 +0000 (11:40 +0100)
committerWim Taymans <wim.taymans@collabora.co.uk>
Tue, 7 Dec 2010 10:40:58 +0000 (11:40 +0100)
Use a new static lock to protect the probed device list instead of the object
class lock.

sys/v4l2/gstv4l2object.c

index 8653573f208975e253f96e41757c3603d96e862a..b93a4d07ace63ce28a6716c1bf5ba302346e859e 100644 (file)
@@ -59,21 +59,21 @@ enum
   V4L2_STD_OBJECT_PROPS,
 };
 
+G_LOCK_DEFINE_STATIC (probe_lock);
+
 const GList *
 gst_v4l2_probe_get_properties (GstPropertyProbe * probe)
 {
   GObjectClass *klass = G_OBJECT_GET_CLASS (probe);
   static GList *list = NULL;
 
-  /* well, not perfect, but better than no locking at all.
-   * In the worst case we leak a list node, so who cares? */
-  GST_CLASS_LOCK (GST_OBJECT_CLASS (klass));
+  G_LOCK (probe_lock);
 
   if (!list) {
     list = g_list_append (NULL, g_object_class_find_property (klass, "device"));
   }
 
-  GST_CLASS_UNLOCK (GST_OBJECT_CLASS (klass));
+  G_UNLOCK (probe_lock);
 
   return list;
 }