Title: [221781] trunk/Source/WebCore
- Revision
- 221781
- Author
- zandober...@gmail.com
- Date
- 2017-09-08 03:55:15 -0700 (Fri, 08 Sep 2017)
Log Message
[GStreamer] Add GRefPtr specializations for GstGLDisplay, GstGLContext
https://bugs.webkit.org/show_bug.cgi?id=176543
Reviewed by Xabier Rodriguez-Calvar.
Both GstGLDisplay and GstGLContext inherit from GstObject, meaning
gst_object_ref_sink() and gst_object_unref() should be used for
incrementing and decrementing reference count. Template specializations
for the adoptGRef(), refGPtr() and derefGPtr() are added for both types,
preventing GRefPtr<> from falling back to using g_object_ref() and
g_object_unref() for reference count modification purposes.
* platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
(WTF::adoptGRef):
(WTF::refGPtr<GstGLDisplay>):
(WTF::derefGPtr<GstGLDisplay>):
(WTF::refGPtr<GstGLContext>):
(WTF::derefGPtr<GstGLContext>):
* platform/graphics/gstreamer/GRefPtrGStreamer.h:
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (221780 => 221781)
--- trunk/Source/WebCore/ChangeLog 2017-09-08 10:54:42 UTC (rev 221780)
+++ trunk/Source/WebCore/ChangeLog 2017-09-08 10:55:15 UTC (rev 221781)
@@ -1,5 +1,27 @@
2017-09-08 Zan Dobersek <zdober...@igalia.com>
+ [GStreamer] Add GRefPtr specializations for GstGLDisplay, GstGLContext
+ https://bugs.webkit.org/show_bug.cgi?id=176543
+
+ Reviewed by Xabier Rodriguez-Calvar.
+
+ Both GstGLDisplay and GstGLContext inherit from GstObject, meaning
+ gst_object_ref_sink() and gst_object_unref() should be used for
+ incrementing and decrementing reference count. Template specializations
+ for the adoptGRef(), refGPtr() and derefGPtr() are added for both types,
+ preventing GRefPtr<> from falling back to using g_object_ref() and
+ g_object_unref() for reference count modification purposes.
+
+ * platform/graphics/gstreamer/GRefPtrGStreamer.cpp:
+ (WTF::adoptGRef):
+ (WTF::refGPtr<GstGLDisplay>):
+ (WTF::derefGPtr<GstGLDisplay>):
+ (WTF::refGPtr<GstGLContext>):
+ (WTF::derefGPtr<GstGLContext>):
+ * platform/graphics/gstreamer/GRefPtrGStreamer.h:
+
+2017-09-08 Zan Dobersek <zdober...@igalia.com>
+
[GStreamer] Incorrect GstCaps unreffing in GStreamerEMEUtilities::createDecryptor()
https://bugs.webkit.org/show_bug.cgi?id=176540
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp (221780 => 221781)
--- trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp 2017-09-08 10:54:42 UTC (rev 221780)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp 2017-09-08 10:55:15 UTC (rev 221781)
@@ -403,6 +403,50 @@
gst_object_unref(GST_OBJECT(ptr));
}
+#if USE(GSTREAMER_GL)
+
+template<> GRefPtr<GstGLDisplay> adoptGRef(GstGLDisplay* ptr)
+{
+ ASSERT(!ptr || !g_object_is_floating(ptr));
+ return GRefPtr<GstGLDisplay>(ptr, GRefPtrAdopt);
+}
+
+template<> GstGLDisplay* refGPtr<GstGLDisplay>(GstGLDisplay* ptr)
+{
+ if (ptr)
+ gst_object_ref_sink(GST_OBJECT(ptr));
+
+ return ptr;
+}
+
+template<> void derefGPtr<GstGLDisplay>(GstGLDisplay* ptr)
+{
+ if (ptr)
+ gst_object_unref(GST_OBJECT(ptr));
+}
+
+template<> GRefPtr<GstGLContext> adoptGRef(GstGLContext* ptr)
+{
+ ASSERT(!ptr || !g_object_is_floating(ptr));
+ return GRefPtr<GstGLContext>(ptr, GRefPtrAdopt);
+}
+
+template<> GstGLContext* refGPtr<GstGLContext>(GstGLContext* ptr)
+{
+ if (ptr)
+ gst_object_ref_sink(GST_OBJECT(ptr));
+
+ return ptr;
+}
+
+template<> void derefGPtr<GstGLContext>(GstGLContext* ptr)
+{
+ if (ptr)
+ gst_object_unref(GST_OBJECT(ptr));
+}
+
+#endif // USE(GSTREAMER_GL)
+
} // namespace WTF
#endif // USE(GSTREAMER)
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h (221780 => 221781)
--- trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h 2017-09-08 10:54:42 UTC (rev 221780)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h 2017-09-08 10:55:15 UTC (rev 221781)
@@ -43,6 +43,11 @@
typedef struct _WebKitVideoSink WebKitVideoSink;
typedef struct _WebKitWebSrc WebKitWebSrc;
+#if USE(GSTREAMER_GL)
+typedef struct _GstGLDisplay GstGLDisplay;
+typedef struct _GstGLContext GstGLContext;
+#endif
+
namespace WTF {
template<> GRefPtr<GstElement> adoptGRef(GstElement* ptr);
@@ -122,6 +127,16 @@
template<> WebKitWebSrc* refGPtr<WebKitWebSrc>(WebKitWebSrc* ptr);
template<> void derefGPtr<WebKitWebSrc>(WebKitWebSrc* ptr);
+#if USE(GSTREAMER_GL)
+template<> GRefPtr<GstGLDisplay> adoptGRef(GstGLDisplay* ptr);
+template<> GstGLDisplay* refGPtr<GstGLDisplay>(GstGLDisplay* ptr);
+template<> void derefGPtr<GstGLDisplay>(GstGLDisplay* ptr);
+
+template<> GRefPtr<GstGLContext> adoptGRef(GstGLContext* ptr);
+template<> GstGLContext* refGPtr<GstGLContext>(GstGLContext* ptr);
+template<> void derefGPtr<GstGLContext>(GstGLContext* ptr);
+#endif
+
} // namespace WTF
#endif // USE(GSTREAMER)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes