Title: [210157] releases/WebKitGTK/webkit-2.14/Source/WebCore
Revision
210157
Author
[email protected]
Date
2016-12-27 02:43:51 -0800 (Tue, 27 Dec 2016)

Log Message

Merge r207666 - [GTK] Several tests crashing on debug bot in (anonymous namespace)::MediaPlayerPrivateGStreamerBase::repaint
https://bugs.webkit.org/show_bug.cgi?id=163511

Patch by Miguel Gomez <[email protected]> on 2016-10-21
Reviewed by Carlos Garcia Campos.

Perform the video repaint in the main thread when accelerated compositing is disabled. Added a new method to
MediaPlayerClient to get whether accelerated compositing is enabled from the MediaPlayer. This is needed
because mediaPlayerAcceleratedCompositingEnabled() will return false while HTMLMediaElement doesn't have a
RenderVideo, even when accelerated compositing is enabled.

Covered by existent tests.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerAcceleratedCompositingEnabled):
* html/HTMLMediaElement.h:
* platform/graphics/MediaPlayer.h:
(WebCore::MediaPlayerClient::mediaPlayerAcceleratedCompositingEnabled):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog (210156 => 210157)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-12-27 10:43:40 UTC (rev 210156)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/ChangeLog	2016-12-27 10:43:51 UTC (rev 210157)
@@ -1,3 +1,28 @@
+2016-10-21  Miguel Gomez  <[email protected]>
+
+        [GTK] Several tests crashing on debug bot in (anonymous namespace)::MediaPlayerPrivateGStreamerBase::repaint
+        https://bugs.webkit.org/show_bug.cgi?id=163511
+
+        Reviewed by Carlos Garcia Campos.
+
+        Perform the video repaint in the main thread when accelerated compositing is disabled. Added a new method to
+        MediaPlayerClient to get whether accelerated compositing is enabled from the MediaPlayer. This is needed
+        because mediaPlayerAcceleratedCompositingEnabled() will return false while HTMLMediaElement doesn't have a
+        RenderVideo, even when accelerated compositing is enabled.
+
+        Covered by existent tests.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::mediaPlayerAcceleratedCompositingEnabled):
+        * html/HTMLMediaElement.h:
+        * platform/graphics/MediaPlayer.h:
+        (WebCore::MediaPlayerClient::mediaPlayerAcceleratedCompositingEnabled):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+        (WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
+        (WebCore::MediaPlayerPrivateGStreamerBase::repaint):
+        (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
+        * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
+
 2016-10-13  Miguel Gomez  <[email protected]>
 
         [GTK] Video playback doesn't work properly with accelerated compositing disabled

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/html/HTMLMediaElement.cpp (210156 => 210157)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/html/HTMLMediaElement.cpp	2016-12-27 10:43:40 UTC (rev 210156)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/html/HTMLMediaElement.cpp	2016-12-27 10:43:51 UTC (rev 210157)
@@ -4581,6 +4581,11 @@
     setNeedsStyleRecalc(SyntheticStyleChange);
 }
 
+bool HTMLMediaElement::mediaPlayerAcceleratedCompositingEnabled()
+{
+    return document().settings() && document().settings()->acceleratedCompositingEnabled();
+}
+
 #if PLATFORM(WIN) && USE(AVFOUNDATION)
 
 GraphicsDeviceAdapter* HTMLMediaElement::mediaPlayerGraphicsDeviceAdapter(const MediaPlayer*) const

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/html/HTMLMediaElement.h (210156 => 210157)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/html/HTMLMediaElement.h	2016-12-27 10:43:40 UTC (rev 210156)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/html/HTMLMediaElement.h	2016-12-27 10:43:51 UTC (rev 210157)
@@ -556,6 +556,7 @@
     void mediaPlayerSizeChanged(MediaPlayer*) override;
     bool mediaPlayerRenderingCanBeAccelerated(MediaPlayer*) override;
     void mediaPlayerRenderingModeChanged(MediaPlayer*) override;
+    bool mediaPlayerAcceleratedCompositingEnabled() override;
     void mediaPlayerEngineUpdated(MediaPlayer*) override;
     void mediaEngineWasUpdated();
 

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/MediaPlayer.h (210156 => 210157)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/MediaPlayer.h	2016-12-27 10:43:40 UTC (rev 210156)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/MediaPlayer.h	2016-12-27 10:43:51 UTC (rev 210157)
@@ -196,6 +196,9 @@
     // availability of the platformLayer().
     virtual void mediaPlayerRenderingModeChanged(MediaPlayer*) { }
 
+    // whether accelerated compositing is enabled for video rendering
+    virtual bool mediaPlayerAcceleratedCompositingEnabled() { return false; }
+
 #if PLATFORM(WIN) && USE(AVFOUNDATION)
     virtual GraphicsDeviceAdapter* mediaPlayerGraphicsDeviceAdapter(const MediaPlayer*) const { return 0; }
 #endif

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (210156 => 210157)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp	2016-12-27 10:43:40 UTC (rev 210156)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp	2016-12-27 10:43:51 UTC (rev 210157)
@@ -150,7 +150,7 @@
     , m_fpsSink(0)
     , m_readyState(MediaPlayer::HaveNothing)
     , m_networkState(MediaPlayer::Empty)
-#if USE(GSTREAMER_GL)
+#if USE(GSTREAMER_GL) || USE(COORDINATED_GRAPHICS_THREADED)
     , m_drawTimer(RunLoop::main(), this, &MediaPlayerPrivateGStreamerBase::repaint)
 #endif
     , m_usingFallbackVideoSink(false)
@@ -534,7 +534,7 @@
 
     m_player->repaint();
 
-#if USE(GSTREAMER_GL)
+#if USE(GSTREAMER_GL) || USE(COORDINATED_GRAPHICS_THREADED)
     m_drawCondition.notifyOne();
 #endif
 }
@@ -554,22 +554,22 @@
     }
 
 #if USE(COORDINATED_GRAPHICS_THREADED)
-#if USE(GSTREAMER_GL)
-    if (m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player))
-        pushTextureToCompositor();
-    else {
+    if (!m_player->client().mediaPlayerAcceleratedCompositingEnabled()) {
         LockHolder locker(m_drawMutex);
         m_drawTimer.startOneShot(0);
         m_drawCondition.wait(m_drawMutex);
+        return;
     }
+
+#if USE(GSTREAMER_GL)
+    pushTextureToCompositor();
 #else
-    if (m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player)) {
+    {
         LockHolder lock(m_drawMutex);
         if (!m_platformLayerProxy->scheduleUpdateOnCompositorThread([this] { this->pushTextureToCompositor(); }))
             return;
         m_drawCondition.wait(m_drawMutex);
-    } else
-        repaint();
+    }
 #endif
     return;
 #else

Modified: releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h (210156 => 210157)


--- releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h	2016-12-27 10:43:40 UTC (rev 210156)
+++ releases/WebKitGTK/webkit-2.14/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h	2016-12-27 10:43:51 UTC (rev 210157)
@@ -177,7 +177,7 @@
     IntSize m_size;
     mutable GMutex m_sampleMutex;
     GRefPtr<GstSample> m_sample;
-#if USE(GSTREAMER_GL)
+#if USE(GSTREAMER_GL) || USE(COORDINATED_GRAPHICS_THREADED)
     RunLoop::Timer<MediaPlayerPrivateGStreamerBase> m_drawTimer;
 #endif
     mutable FloatSize m_videoSize;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to