Title: [229021] releases/WebKitGTK/webkit-2.20/Source/WebCore
- Revision
- 229021
- Author
- [email protected]
- Date
- 2018-02-26 06:19:33 -0800 (Mon, 26 Feb 2018)
Log Message
Merge r228869 - [GStreamer] We need to adopt GstGlDisplays after GStreamer 1.13.1
https://bugs.webkit.org/show_bug.cgi?id=182996
Reviewed by Xabier Rodriguez-Calvar.
* platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
(WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):
Adopt references when running with GStreamer 1.13.1 to avoid
memory leaks.
Modified Paths
Diff
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog (229020 => 229021)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog 2018-02-26 14:19:29 UTC (rev 229020)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/ChangeLog 2018-02-26 14:19:33 UTC (rev 229021)
@@ -1,3 +1,15 @@
+2018-02-21 Philippe Normand <[email protected]>
+
+ [GStreamer] We need to adopt GstGlDisplays after GStreamer 1.13.1
+ https://bugs.webkit.org/show_bug.cgi?id=182996
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ * platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp:
+ (WebCore::MediaPlayerPrivateGStreamerBase::ensureGstGLContext):
+ Adopt references when running with GStreamer 1.13.1 to avoid
+ memory leaks.
+
2018-02-21 Zalan Bujtas <[email protected]>
[RenderTreeBuilder] Move RenderView::willBeRemoved() mutation logic to RenderTreeBuilder
Modified: releases/WebKitGTK/webkit-2.20/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp (229020 => 229021)
--- releases/WebKitGTK/webkit-2.20/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2018-02-26 14:19:29 UTC (rev 229020)
+++ releases/WebKitGTK/webkit-2.20/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2018-02-26 14:19:33 UTC (rev 229021)
@@ -439,25 +439,46 @@
return true;
auto& sharedDisplay = PlatformDisplay::sharedDisplayForCompositing();
+ // The floating ref removal support was added in https://bugzilla.gnome.org/show_bug.cgi?id=743062.
+ bool shouldAdoptRef = webkitGstCheckVersion(1, 13, 1);
if (!m_glDisplay) {
#if PLATFORM(X11)
#if USE(GLX)
- if (is<PlatformDisplayX11>(sharedDisplay))
- m_glDisplay = GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
+ if (is<PlatformDisplayX11>(sharedDisplay)) {
+ GST_DEBUG("Creating X11 shared GL display");
+ if (shouldAdoptRef)
+ m_glDisplay = adoptGRef(GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native())));
+ else
+ m_glDisplay = GST_GL_DISPLAY(gst_gl_display_x11_new_with_display(downcast<PlatformDisplayX11>(sharedDisplay).native()));
+ }
#elif USE(EGL)
- if (is<PlatformDisplayX11>(sharedDisplay))
- m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayX11>(sharedDisplay).eglDisplay()));
+ if (is<PlatformDisplayX11>(sharedDisplay)) {
+ GST_DEBUG("Creating X11 shared EGL display");
+ if (shouldAdoptRef)
+ m_glDisplay = adoptGRef(GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayX11>(sharedDisplay).eglDisplay())));
+ else
+ m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayX11>(sharedDisplay).eglDisplay()));
+ }
#endif
#endif
#if PLATFORM(WAYLAND)
- if (is<PlatformDisplayWayland>(sharedDisplay))
- m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay()));
+ if (is<PlatformDisplayWayland>(sharedDisplay)) {
+ GST_DEBUG("Creating Wayland shared display");
+ if (shouldAdoptRef)
+ m_glDisplay = adoptGRef(GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay())));
+ else
+ m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWayland>(sharedDisplay).eglDisplay()));
+ }
#endif
#if PLATFORM(WPE)
ASSERT(is<PlatformDisplayWPE>(sharedDisplay));
- m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWPE>(sharedDisplay).eglDisplay()));
+ GST_DEBUG("Creating WPE shared EGL display");
+ if (shouldAdoptRef)
+ m_glDisplay = adoptGRef(GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWPE>(sharedDisplay).eglDisplay())));
+ else
+ m_glDisplay = GST_GL_DISPLAY(gst_gl_display_egl_new_with_egl_display(downcast<PlatformDisplayWPE>(sharedDisplay).eglDisplay()));
#endif
ASSERT(m_glDisplay);
@@ -479,7 +500,10 @@
if (!contextHandle)
return false;
- m_glContext = gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI);
+ if (shouldAdoptRef)
+ m_glContext = adoptGRef(gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI));
+ else
+ m_glContext = gst_gl_context_new_wrapped(m_glDisplay.get(), reinterpret_cast<guintptr>(contextHandle), glPlatform, glAPI);
return true;
}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes