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