Implement Gst.MiniObject.Copy() manually to get the correct type from the instance
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 18 Apr 2009 14:21:16 +0000 (16:21 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Sat, 18 Apr 2009 14:21:16 +0000 (16:21 +0200)
gstreamer-sharp/Gstreamer.metadata
gstreamer-sharp/MiniObject.custom

index 49b8426..f6fa05e 100644 (file)
   <attr path="/api/namespace/boxed[@name='MiniObject']" name="opaque">true</attr>
   <attr path="/api/namespace/boxed[@name='MiniObject']" name="abstract">1</attr>
   <remove-attr path="/api/namespace/boxed[@name='MiniObject']" name="parent" />
-  <attr path="/api/namespace/boxed[@name='MiniObject']/field[@name='Refcount']" name="hidden">1</attr>
   <attr path="/api/namespace/boxed[@name='MiniObject']/field[@name='Flags']" name="writeable">true</attr>
   <attr path="/api/namespace/boxed[@name='MiniObject']/field[@name='Flags']" name="type">GstMiniObjectFlags</attr>
-  <attr path="/api/namespace/boxed[@name='MiniObject']/method[@cname='gst_mini_object_copy']" name="owned">true</attr>
+  <attr path="/api/namespace/boxed[@name='MiniObject']/method[@cname='gst_mini_object_copy']" name="hidden">1</attr>
   <attr path="/api/namespace/boxed[@name='MiniObject']/method[@cname='gst_mini_object_make_writable']" name="hidden">1</attr>
   <attr path="/api/namespace/boxed[@name='MiniObject']/method[@cname='gst_mini_object_replace']" name="hidden">1</attr>
 
index 3972535..cded844 100644 (file)
@@ -38,3 +38,14 @@ public void MakeWritable() {
   Owned = true;
 }
 
+[DllImport ("gstreamer-0.10.dll") ]
+static extern IntPtr gst_mini_object_copy (IntPtr raw);
+
+public Gst.MiniObject Copy() {
+  IntPtr raw_ret = gst_mini_object_copy (Handle);
+  GLib.GType type = new GLib.GType (gstsharp_g_type_from_instance (raw_ret));
+
+  Gst.MiniObject ret = raw_ret == IntPtr.Zero ? null : (Gst.MiniObject) GLib.Opaque.GetOpaque (raw_ret, (Type) type, true);
+  return ret;
+}
+