diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-04-12 20:55:11 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2009-04-12 20:55:11 +0200 |
commit | 4a716f3ba2266377175715588c0909c69e6b768f (patch) | |
tree | 66fcde2cc7ab407179e6a278067a868d0a0fcab4 | |
parent | 652b922790a96574532850ca3d4288118c8fed13 (diff) |
Fix MiniObject bindings
-rw-r--r-- | gstreamer-sharp/Gstreamer.metadata | 11 | ||||
-rw-r--r-- | gstreamer-sharp/MiniObject.custom | 16 |
2 files changed, 25 insertions, 2 deletions
diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata index 4fcc5a1..b35cf57 100644 --- a/gstreamer-sharp/Gstreamer.metadata +++ b/gstreamer-sharp/Gstreamer.metadata @@ -167,7 +167,16 @@ <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" /> - <remove-node path="/api/namespace/boxed[@name='MiniObject']/constructor[@cname='gst_mini_object_new']" /> + <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_make_writable']" name="hidden">1</attr> + <attr path="/api/namespace/boxed[@name='MiniObject']/method[@cname='gst_mini_object_replace']" name="hidden">1</attr> + + <attr path="/api/namespace/callback[@name='MiniObjectCopyFunction']" name="hidden">1</attr> + + <attr path="/api/namespace/callback[@name='MiniObjectFinalizeFunction']" name="hidden">1</attr> <attr path="/api/namespace/object[@name='Object']/field[@name='Refcount']" name="hidden">1</attr> <attr path="/api/namespace/object[@name='Object']/method[@name='DefaultError']" name="hidden">1</attr> diff --git a/gstreamer-sharp/MiniObject.custom b/gstreamer-sharp/MiniObject.custom index 4706791..0d641a1 100644 --- a/gstreamer-sharp/MiniObject.custom +++ b/gstreamer-sharp/MiniObject.custom @@ -1,4 +1,4 @@ -protected MiniObject () : base (IntPtr.Zero) +protected MiniObject () : base () { } @@ -25,3 +25,17 @@ private static extern IntPtr gstsharp_g_value_type (ref GLib.Value val); private static extern IntPtr gst_value_get_mini_object (ref GLib.Value v); [DllImport ("gstreamer-0.10.dll") ] private static extern void gst_value_set_mini_object (ref GLib.Value v, IntPtr o); + +/* FIXME: This is not optimal! */ +public void MakeWritable() { + if (IsWritable) + return; + + IntPtr copy = gst_mini_object_copy (Raw); + Raw = copy; + /* ^--- Takes a second ref, not good */ + Unref (Raw); + /* ^--- Sets Owned = false, wrong! */ + Owned = true; +} + |