Title: [192359] trunk/Source/WebCore
- Revision
- 192359
- Author
- carlo...@webkit.org
- Date
- 2015-11-12 03:19:55 -0800 (Thu, 12 Nov 2015)
Log Message
[GStreamer] Use RunLoop::timer in MediaPlayerPrivateGStreamerBase for GL drawing
https://bugs.webkit.org/show_bug.cgi?id=151099
Reviewed by Philippe Normand.
Instead of the GThreadSafeMainLoopSource.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::repaint):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
(WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase): Deleted.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (192358 => 192359)
--- trunk/Source/WebCore/ChangeLog 2015-11-12 10:50:02 UTC (rev 192358)
+++ trunk/Source/WebCore/ChangeLog 2015-11-12 11:19:55 UTC (rev 192359)
@@ -1,3 +1,19 @@
+2015-11-12 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GStreamer] Use RunLoop::timer in MediaPlayerPrivateGStreamerBase for GL drawing
+ https://bugs.webkit.org/show_bug.cgi?id=151099
+
+ Reviewed by Philippe Normand.
+
+ Instead of the GThreadSafeMainLoopSource.
+
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+ (WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
+ (WebCore::MediaPlayerPrivateGStreamerBase::repaint):
+ (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
+ (WebCore::MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase): Deleted.
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
+
2015-11-12 Csaba Osztrogonác <o...@webkit.org>
Remove ENABLE(SATURATED_LAYOUT_ARITHMETIC) guards
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (192358 => 192359)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2015-11-12 10:50:02 UTC (rev 192358)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2015-11-12 11:19:55 UTC (rev 192359)
@@ -107,13 +107,12 @@
, m_fpsSink(0)
, m_readyState(MediaPlayer::HaveNothing)
, m_networkState(MediaPlayer::Empty)
+#if USE(GSTREAMER_GL)
+ , m_drawTimer(RunLoop::main(), this, &MediaPlayerPrivateGStreamerBase::repaint())
+#endif
, m_usingFallbackVideoSink(false)
{
g_mutex_init(&m_sampleMutex);
-#if USE(GSTREAMER_GL)
- g_cond_init(&m_drawCondition);
- g_mutex_init(&m_drawMutex);
-#endif
}
MediaPlayerPrivateGStreamerBase::~MediaPlayerPrivateGStreamerBase()
@@ -128,11 +127,6 @@
g_signal_handlers_disconnect_matched(m_volumeElement.get(), G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
-#if USE(GSTREAMER_GL)
- g_cond_clear(&m_drawCondition);
- g_mutex_clear(&m_drawMutex);
-#endif
-
if (m_pipeline) {
GRefPtr<GstBus> bus = adoptGRef(gst_pipeline_get_bus(GST_PIPELINE(m_pipeline.get())));
ASSERT(bus);
@@ -421,6 +415,28 @@
}
#endif
+void MediaPlayerPrivateGStreamerBase::repaint()
+{
+ ASSERT(m_sample);
+ ASSERT(isMainThread());
+
+#if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
+ if (supportsAcceleratedRendering() && m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player) && client()) {
+ client()->setPlatformLayerNeedsDisplay();
+#if USE(GSTREAMER_GL)
+ m_drawCondition.notifyOne();
+#endif
+ return;
+ }
+#endif
+
+ m_player->repaint();
+
+#if USE(GSTREAMER_GL)
+ m_drawCondition.notifyOne();
+#endif
+}
+
void MediaPlayerPrivateGStreamerBase::triggerRepaint(GstSample* sample)
{
{
@@ -432,29 +448,13 @@
{
ASSERT(!isMainThread());
- WTF::GMutexLocker<GMutex> lock(m_drawMutex);
-
- m_drawTimerHandler.schedule("[WebKit] video render", [this] {
- // Rendering should be done from the main thread
- // because this is where the GL APIs were initialized.
- WTF::GMutexLocker<GMutex> lock(m_drawMutex);
-#if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
- if (supportsAcceleratedRendering() && m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player) && client())
- client()->setPlatformLayerNeedsDisplay();
- g_cond_signal(&m_drawCondition);
-#endif
- });
- g_cond_wait(&m_drawCondition, &m_drawMutex);
+ LockHolder locker(m_drawMutex);
+ m_drawTimer.startOneShot(0);
+ m_drawCondition.wait();
}
-
-#elif USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
- if (supportsAcceleratedRendering() && m_player->client().mediaPlayerRenderingCanBeAccelerated(m_player) && client()) {
- client()->setPlatformLayerNeedsDisplay();
- return;
- }
+#else
+ repaint();
#endif
-
- m_player->repaint();
}
void MediaPlayerPrivateGStreamerBase::repaintCallback(MediaPlayerPrivateGStreamerBase* player, GstSample* sample)
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h (192358 => 192359)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h 2015-11-12 10:50:02 UTC (rev 192358)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h 2015-11-12 11:19:55 UTC (rev 192359)
@@ -28,8 +28,9 @@
#include "MainThreadNotifier.h"
#include "MediaPlayerPrivate.h"
#include <glib.h>
+#include <wtf/Condition.h>
#include <wtf/Forward.h>
-#include <wtf/glib/GThreadSafeMainLoopSource.h>
+#include <wtf/RunLoop.h>
#if USE(TEXTURE_MAPPER_GL) && !USE(COORDINATED_GRAPHICS)
#include "TextureMapperPlatformLayer.h"
@@ -117,6 +118,7 @@
virtual bool handleSyncMessage(GstMessage*);
void triggerRepaint(GstSample*);
+ void repaint();
static void repaintCallback(MediaPlayerPrivateGStreamerBase*, GstSample*);
#if USE(GSTREAMER_GL)
@@ -152,9 +154,9 @@
mutable GMutex m_sampleMutex;
GRefPtr<GstSample> m_sample;
#if USE(GSTREAMER_GL)
- GThreadSafeMainLoopSource m_drawTimerHandler;
- GCond m_drawCondition;
- GMutex m_drawMutex;
+ RunLoop::Timer<MediaPlayerPrivateGStreamerBase> m_drawTimer;
+ Condition m_drawCondition;
+ Lock m_drawMutex;
#endif
mutable FloatSize m_videoSize;
bool m_usingFallbackVideoSink;
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes