From: Sebastian Dröge Date: Thu, 23 Apr 2009 12:39:50 +0000 (+0200) Subject: Ref/unref the Src field of Gst.Event/Message when setting it X-Git-Tag: 1.19.3~483^2~684 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48fc341b067a4766a62d0c414c119b4fc7d167a8;p=platform%2Fupstream%2Fgstreamer.git Ref/unref the Src field of Gst.Event/Message when setting it --- diff --git a/gstreamer-sharp/Event.custom b/gstreamer-sharp/Event.custom index 0233314..704fbf4 100644 --- a/gstreamer-sharp/Event.custom +++ b/gstreamer-sharp/Event.custom @@ -27,6 +27,12 @@ public ulong Timestamp { [DllImport ("gstreamersharpglue-0.10") ] extern static uint gstsharp_gst_event_get_src_offset (); +[DllImport ("gobject-2.0.dll")] +extern static IntPtr g_object_ref (IntPtr handle); + +[DllImport ("gobject-2.0.dll")] +extern static void g_object_unref (IntPtr handle); + static uint src_offset = gstsharp_gst_event_get_src_offset (); public Gst.Object Src { get { @@ -39,9 +45,12 @@ public Gst.Object Src { if (!IsWritable) throw new ApplicationException (); + if (Src != null) + g_object_unref (Src.Handle); + unsafe { IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + src_offset); - *raw_ptr = value == null ? IntPtr.Zero : value.Handle; + *raw_ptr = value == null ? IntPtr.Zero : g_object_ref (value.Handle); } } } diff --git a/gstreamer-sharp/Message.custom b/gstreamer-sharp/Message.custom index d48f813..c0b21d0 100644 --- a/gstreamer-sharp/Message.custom +++ b/gstreamer-sharp/Message.custom @@ -27,6 +27,12 @@ public ulong Timestamp { [DllImport ("gstreamersharpglue-0.10") ] extern static uint gstsharp_gst_message_get_src_offset (); +[DllImport ("gobject-2.0.dll")] +extern static IntPtr g_object_ref (IntPtr handle); + +[DllImport ("gobject-2.0.dll")] +extern static void g_object_unref (IntPtr handle); + static uint src_offset = gstsharp_gst_message_get_src_offset (); public Gst.Object Src { get { @@ -39,9 +45,12 @@ public Gst.Object Src { if (!IsWritable) throw new ApplicationException (); + if (Src != null) + g_object_unref (Src.Handle); + unsafe { IntPtr* raw_ptr = (IntPtr*) ( ( (byte*) Handle) + src_offset); - *raw_ptr = value == null ? IntPtr.Zero : value.Handle; + *raw_ptr = value == null ? IntPtr.Zero : g_object_ref (value.Handle); } } }