Skip to content

Commit a36d937

Browse files
philncalvaris
authored andcommitted
[GStreamer] GRefPtr template specialization for GstObject
https://bugs.webkit.org/show_bug.cgi?id=266967 Reviewed by Carlos Garcia Campos. Without this the leak tracer might report leaks from MediaPlayerPrivateGStreamer::updateTracks() that uses a GRefPtr<GstObject>. I don't think it's a real one, because without this patch GRefPtr would fallback to the default GObject ref/unref, which is also OK, but not tracked by the leak tracer. * Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp: (WTF::adoptGRef): (WTF::refGPtr<GstObject>): (WTF::derefGPtr<GstObject>): * Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h: Canonical link: https://commits.webkit.org/272553@main
1 parent af0715b commit a36d937

2 files changed

Lines changed: 23 additions & 0 deletions

File tree

Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,25 @@ template<> void derefGPtr<GstMiniObject>(GstMiniObject* ptr)
5555
gst_mini_object_unref(ptr);
5656
}
5757

58+
template<> GRefPtr<GstObject> adoptGRef(GstObject* ptr)
59+
{
60+
return GRefPtr<GstObject>(ptr, GRefPtrAdopt);
61+
}
62+
63+
template<> GstObject* refGPtr<GstObject>(GstObject* ptr)
64+
{
65+
if (ptr)
66+
gst_object_ref(ptr);
67+
68+
return ptr;
69+
}
70+
71+
template<> void derefGPtr<GstObject>(GstObject* ptr)
72+
{
73+
if (ptr)
74+
gst_object_unref(ptr);
75+
}
76+
5877
template <> GRefPtr<GstElement> adoptGRef(GstElement* ptr)
5978
{
6079
ASSERT(!ptr || !g_object_is_floating(ptr));

Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ template<> GRefPtr<GstMiniObject> adoptGRef(GstMiniObject* ptr);
5656
template<> GstMiniObject* refGPtr<GstMiniObject>(GstMiniObject* ptr);
5757
template<> void derefGPtr<GstMiniObject>(GstMiniObject* ptr);
5858

59+
template<> GRefPtr<GstObject> adoptGRef(GstObject* ptr);
60+
template<> GstObject* refGPtr<GstObject>(GstObject* ptr);
61+
template<> void derefGPtr<GstObject>(GstObject* ptr);
62+
5963
template<> GRefPtr<GstElement> adoptGRef(GstElement* ptr);
6064
template<> GstElement* refGPtr<GstElement>(GstElement* ptr);
6165
template<> void derefGPtr<GstElement>(GstElement* ptr);

0 commit comments

Comments
 (0)