gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r26197 - Extractor/src/plugins


From: gnunet
Subject: [GNUnet-SVN] r26197 - Extractor/src/plugins
Date: Sat, 23 Feb 2013 18:40:56 +0100

Author: LRN
Date: 2013-02-23 18:40:56 +0100 (Sat, 23 Feb 2013)
New Revision: 26197

Modified:
   Extractor/src/plugins/Makefile.am
   Extractor/src/plugins/gstreamer_extractor.c
Log:
GStreamer plugin: synchronize IPC

Modified: Extractor/src/plugins/Makefile.am
===================================================================
--- Extractor/src/plugins/Makefile.am   2013-02-22 16:24:33 UTC (rev 26196)
+++ Extractor/src/plugins/Makefile.am   2013-02-23 17:40:56 UTC (rev 26197)
@@ -331,7 +331,7 @@
 libextractor_gstreamer_la_LDFLAGS = \
   $(PLUGINFLAGS)
 libextractor_gstreamer_la_LIBADD = \
-  $(GSTREAMER_LIBS) $(GSTREAMER_PBUTILS_LIBS) $(GSTREAMER_TAG_LIBS) 
$(GSTREAMER_APP_LIBS) $(XLIB)
+  $(GSTREAMER_LIBS) $(GSTREAMER_PBUTILS_LIBS) $(GSTREAMER_TAG_LIBS) 
$(GSTREAMER_APP_LIBS) $(XLIB) -lpthread
 libextractor_gstreamer_la_CFLAGS = \
   $(GSTREAMER_CFLAGS) $(GSTREAMER_PBUTILS_CFLAGS) $(GSTREAMER_TAG_CFLAGS) 
$(GSTREAMER_APP_CFALGS) 
 

Modified: Extractor/src/plugins/gstreamer_extractor.c
===================================================================
--- Extractor/src/plugins/gstreamer_extractor.c 2013-02-22 16:24:33 UTC (rev 
26196)
+++ Extractor/src/plugins/gstreamer_extractor.c 2013-02-23 17:40:56 UTC (rev 
26197)
@@ -29,6 +29,7 @@
 #include <gst/pbutils/pbutils.h>
 #include <gst/tag/tag.h>
 #include <gst/app/gstappsrc.h>
+#include <pthread.h>
 
 GST_DEBUG_CATEGORY_STATIC (gstreamer_extractor);
 #define GST_CAT_DEFAULT gstreamer_extractor
@@ -47,6 +48,8 @@
  */
 #define DATA_TIMEOUT 80000LL /* 80ms */
 
+pthread_mutex_t pipe_mutex;
+
 /**
  * Struct mapping GSTREAMER tags to LE tags.
  */
@@ -951,6 +954,7 @@
 
   accumulated = 0;
   data_len = 1;
+  pthread_mutex_lock (&pipe_mutex);
   while ( (accumulated < size) && (data_len > 0) )
   {
     data_len = ps->ec->read (ps->ec->cls, (void **) &le_data, size - 
accumulated);
@@ -960,6 +964,7 @@
       accumulated += data_len;
     }
   }
+  pthread_mutex_unlock (&pipe_mutex);
   gst_memory_unmap (mem, &mi);
   if (size == accumulated)
   {
@@ -1002,7 +1007,9 @@
           struct PrivStruct * ps)
 {
   GST_DEBUG ("seek to offset %" G_GUINT64_FORMAT, position);
+  pthread_mutex_lock (&pipe_mutex);
   ps->offset = ps->ec->seek (ps->ec->cls, position, SEEK_SET);
+  pthread_mutex_unlock (&pipe_mutex);
   ps->last_data_request_time = g_get_monotonic_time ();
   return ps->offset == position;
 }
@@ -1918,7 +1925,9 @@
     case GST_DISCOVERER_MISSING_PLUGINS:
       break;
     }
+  pthread_mutex_lock (&pipe_mutex);
   send_info (info, ps);
+  pthread_mutex_unlock (&pipe_mutex);
 }
 
 
@@ -2087,6 +2096,8 @@
   subtitle_quarks[1] = g_quark_from_string (NULL);
 
   duration_quark = g_quark_from_string ("duration");
+
+  pthread_mutex_init (&pipe_mutex, NULL);
 }
 
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]