Title: [203159] trunk/Source/WebCore
- Revision
- 203159
- Author
- [email protected]
- Date
- 2016-07-13 05:03:28 -0700 (Wed, 13 Jul 2016)
Log Message
[GStreamer][GL] crash within triggerRepaint
https://bugs.webkit.org/show_bug.cgi?id=159552
Reviewed by Xabier Rodriguez-Calvar.
Revert the un-needed changes introduced in r203056 and use the
MainThreadNotifier without redundant checks.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
(WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
(WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
(WebCore::MediaPlayerPrivateGStreamer::createWeakPtr):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
(WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
(WebCore::MediaPlayerPrivateGStreamerBase::createWeakPtr): Deleted.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (203158 => 203159)
--- trunk/Source/WebCore/ChangeLog 2016-07-13 11:37:48 UTC (rev 203158)
+++ trunk/Source/WebCore/ChangeLog 2016-07-13 12:03:28 UTC (rev 203159)
@@ -1,3 +1,24 @@
+2016-07-13 Philippe Normand <[email protected]>
+
+ [GStreamer][GL] crash within triggerRepaint
+ https://bugs.webkit.org/show_bug.cgi?id=159552
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ Revert the un-needed changes introduced in r203056 and use the
+ MainThreadNotifier without redundant checks.
+
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:
+ (WebCore::MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer):
+ (WebCore::MediaPlayerPrivateGStreamer::createGSTPlayBin):
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:
+ (WebCore::MediaPlayerPrivateGStreamer::createWeakPtr):
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+ (WebCore::MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase):
+ (WebCore::MediaPlayerPrivateGStreamerBase::triggerRepaint):
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h:
+ (WebCore::MediaPlayerPrivateGStreamerBase::createWeakPtr): Deleted.
+
2016-07-13 Carlos Garcia Campos <[email protected]>
Unreviewed. Fix GObject DOM bindings API breaks after r203047-
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp (203158 => 203159)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2016-07-13 11:37:48 UTC (rev 203158)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp 2016-07-13 12:03:28 UTC (rev 203159)
@@ -132,6 +132,7 @@
MediaPlayerPrivateGStreamer::MediaPlayerPrivateGStreamer(MediaPlayer* player)
: MediaPlayerPrivateGStreamerBase(player)
+ , m_weakPtrFactory(this)
, m_source(0)
, m_seekTime(0)
, m_changingRate(false)
@@ -1928,10 +1929,8 @@
GRefPtr<GstMessage> protectedMessage(message);
auto weakThis = player.createWeakPtr();
RunLoop::main().dispatch([weakThis, protectedMessage] {
- if (weakThis) {
- auto* player = reinterpret_cast<MediaPlayerPrivateGStreamer*>(weakThis.get());
- player->handleMessage(protectedMessage.get());
- }
+ if (weakThis)
+ weakThis->handleMessage(protectedMessage.get());
});
}
gst_message_unref(message);
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h (203158 => 203159)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2016-07-13 11:37:48 UTC (rev 203158)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h 2016-07-13 12:03:28 UTC (rev 203159)
@@ -34,6 +34,7 @@
#include <gst/pbutils/install-plugins.h>
#include <wtf/Forward.h>
#include <wtf/RunLoop.h>
+#include <wtf/WeakPtr.h>
#if ENABLE(VIDEO_TRACK) && USE(GSTREAMER_MPEGTS)
#include <wtf/text/AtomicStringHash.h>
@@ -130,6 +131,8 @@
static bool isAvailable();
+ WeakPtr<MediaPlayerPrivateGStreamer> createWeakPtr() { return m_weakPtrFactory.createWeakPtr(); }
+
GstElement* createAudioSink() override;
float playbackPosition() const;
@@ -191,6 +194,8 @@
static GstFlowReturn newTextSampleCallback(MediaPlayerPrivateGStreamer*);
#endif
+ WeakPtrFactory<MediaPlayerPrivateGStreamer> m_weakPtrFactory;
+
GRefPtr<GstElement> m_source;
#if ENABLE(VIDEO_TRACK)
GRefPtr<GstElement> m_textAppSink;
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (203158 => 203159)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2016-07-13 11:37:48 UTC (rev 203158)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2016-07-13 12:03:28 UTC (rev 203159)
@@ -146,8 +146,7 @@
#endif // USE(COORDINATED_GRAPHICS_THREADED) && USE(GSTREAMER_GL)
MediaPlayerPrivateGStreamerBase::MediaPlayerPrivateGStreamerBase(MediaPlayer* player)
- : m_weakPtrFactory(this)
- , m_player(player)
+ : m_player(player)
, m_fpsSink(0)
, m_readyState(MediaPlayer::HaveNothing)
, m_networkState(MediaPlayer::Empty)
@@ -551,15 +550,7 @@
if (triggerResize) {
GST_DEBUG("First sample reached the sink, triggering video dimensions update");
- if (isMainThread())
- m_player->sizeChanged();
- else {
- auto weakThis = createWeakPtr();
- m_notifier.notify(MainThreadNotification::SizeChanged, [weakThis] {
- if (weakThis)
- weakThis->m_player->sizeChanged();
- });
- }
+ m_notifier.notify(MainThreadNotification::SizeChanged, [this] { m_player->sizeChanged(); });
}
#if USE(COORDINATED_GRAPHICS_THREADED)
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h (203158 => 203159)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h 2016-07-13 11:37:48 UTC (rev 203158)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.h 2016-07-13 12:03:28 UTC (rev 203159)
@@ -33,7 +33,6 @@
#include <wtf/Condition.h>
#include <wtf/Forward.h>
#include <wtf/RunLoop.h>
-#include <wtf/WeakPtr.h>
#if USE(TEXTURE_MAPPER)
#include "TextureMapperPlatformLayer.h"
@@ -127,10 +126,6 @@
protected:
MediaPlayerPrivateGStreamerBase(MediaPlayer*);
-
- WeakPtrFactory<MediaPlayerPrivateGStreamerBase> m_weakPtrFactory;
- WeakPtr<MediaPlayerPrivateGStreamerBase> createWeakPtr() { return m_weakPtrFactory.createWeakPtr(); }
-
virtual GstElement* createVideoSink();
#if USE(GSTREAMER_GL)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes