diff --git a/gstreamer-sharp/Gstreamer.metadata b/gstreamer-sharp/Gstreamer.metadata
index 4fcc5a1f4e..b35cf57180 100644
--- a/gstreamer-sharp/Gstreamer.metadata
+++ b/gstreamer-sharp/Gstreamer.metadata
@@ -167,7 +167,16 @@
true
1
-
+ 1
+ true
+ GstMiniObjectFlags
+ true
+ 1
+ 1
+
+ 1
+
+ 1
1
1
diff --git a/gstreamer-sharp/MiniObject.custom b/gstreamer-sharp/MiniObject.custom
index 4706791f4a..0d641a165c 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;
+}
+