Title: [177279] trunk/Source/WebCore
Revision
177279
Author
[email protected]
Date
2014-12-15 07:38:02 -0800 (Mon, 15 Dec 2014)

Log Message

[GStreamer] the webkitwebsrc element can stale
https://bugs.webkit.org/show_bug.cgi?id=138425

Patch by Xavier Claessens <[email protected]> on 2014-12-15
Reviewed by Philippe Normand.

* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
(removeTimeoutSources):
(webKitWebSrcStart):
(webKitWebSrcChangeState):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (177278 => 177279)


--- trunk/Source/WebCore/ChangeLog	2014-12-15 13:41:26 UTC (rev 177278)
+++ trunk/Source/WebCore/ChangeLog	2014-12-15 15:38:02 UTC (rev 177279)
@@ -1,3 +1,15 @@
+2014-12-15  Xavier Claessens  <[email protected]>
+
+        [GStreamer] the webkitwebsrc element can stale
+        https://bugs.webkit.org/show_bug.cgi?id=138425
+
+        Reviewed by Philippe Normand.
+
+        * platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
+        (removeTimeoutSources):
+        (webKitWebSrcStart):
+        (webKitWebSrcChangeState):
+
 2014-12-15  Gyuyoung Kim  <[email protected]>
 
         [GTK] Remove GamepadDeviceGtk::create()

Modified: trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp (177278 => 177279)


--- trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2014-12-15 13:41:26 UTC (rev 177278)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp	2014-12-15 15:38:02 UTC (rev 177279)
@@ -124,6 +124,7 @@
 
     guint64 requestedOffset;
 
+    gboolean pendingStart;
     GThreadSafeMainLoopSource startSource;
     GThreadSafeMainLoopSource stopSource;
     GThreadSafeMainLoopSource needDataSource;
@@ -364,7 +365,8 @@
 {
     WebKitWebSrcPrivate* priv = src->priv;
 
-    priv->startSource.cancel();
+    if (!priv->pendingStart)
+        priv->startSource.cancel();
     priv->needDataSource.cancel();
     priv->enoughDataSource.cancel();
     priv->seekSource.cancel();
@@ -436,6 +438,7 @@
 
     GMutexLocker<GMutex> locker(*GST_OBJECT_GET_LOCK(src));
 
+    priv->pendingStart = FALSE;
     priv->didPassAccessControlCheck = false;
 
     if (!priv->uri) {
@@ -540,12 +543,14 @@
     switch (transition) {
     case GST_STATE_CHANGE_READY_TO_PAUSED:
         GST_DEBUG_OBJECT(src, "READY->PAUSED");
+        priv->pendingStart = TRUE;
         gst_object_ref(src);
         priv->startSource.schedule("[WebKit] webKitWebSrcStart", std::function<void()>(std::bind(webKitWebSrcStart, src)), G_PRIORITY_DEFAULT,
             [src] { gst_object_unref(src); });
         break;
     case GST_STATE_CHANGE_PAUSED_TO_READY:
         GST_DEBUG_OBJECT(src, "PAUSED->READY");
+        priv->pendingStart = FALSE;
         // cancel pending sources
         removeTimeoutSources(src);
         gst_object_ref(src);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to