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

Reply via email to