ext/gnomevfs/gstgnomevfssrc.c (gst_gnomevfssrc_uri_get_protocols): protect gst_gnomev...
authorJohan Dahlin <johan@gnome.org>
Sun, 2 Oct 2005 21:06:02 +0000 (21:06 +0000)
committerJohan Dahlin <johan@gnome.org>
Sun, 2 Oct 2005 21:06:02 +0000 (21:06 +0000)
Original commit message from CVS:
* ext/gnomevfs/gstgnomevfssrc.c (gst_gnomevfssrc_uri_get_protocols):
protect gst_gnomevfs_get_supported_uris by a mutex, to make it
MT safe.

ChangeLog
ext/gnomevfs/gstgnomevfssrc.c

index 8dc864af7816b6c8794b78a0fb96edf82147d94a..b89ea06c5be8af6bcf61e52784df10bb71077a1d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2005-10-02  Johan Dahlin  <johan@gnome.org>
+
+       * ext/gnomevfs/gstgnomevfssrc.c (gst_gnomevfssrc_uri_get_protocols): 
+       protect gst_gnomevfs_get_supported_uris by a mutex, to make it
+       MT safe.
+
 2005-10-02  Andy Wingo  <wingo@pobox.com>
 
        * gst-libs/gst/audio/gstringbuffer.c (gst_ring_buffer_clear) 
index 92914a16b17c9379dfdf1c31a90a71144e6a114b..bee1ffa4a3f9cce21f49282b4e0cea0fb07ddf14 100644 (file)
@@ -106,6 +106,7 @@ typedef struct _GstGnomeVFSSrc
   gint audiocast_thread_die_outfd;
   gint audiocast_port;
   gint audiocast_fd;
+  GMutex *list_uris_mutex;
 } GstGnomeVFSSrc;
 
 typedef struct _GstGnomeVFSSrcClass
@@ -343,9 +344,16 @@ static gchar **
 gst_gnomevfssrc_uri_get_protocols (void)
 {
   static gchar **protocols = NULL;
+  static GMutex *mutex = NULL;
 
-  if (!protocols)
+  if (G_UNLIKELY (!protocols)) {
+    if (!mutex)
+      mutex = g_mutex_new ();
+
+    g_mutex_lock (mutex);
     protocols = gst_gnomevfs_get_supported_uris ();
+    g_mutex_unlock (mutex);
+  }
 
   return protocols;
 }