diff -Naur generator-upstream/BoxedGen.cs generator/BoxedGen.cs
--- generator-upstream/BoxedGen.cs	2009-01-04 23:29:56.000000000 +0100
+++ generator/BoxedGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -40,16 +40,16 @@
 
 			StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
 			base.Generate (gen_info);
-			sw.WriteLine ("\t\tpublic static explicit operator GLib.Value (" + QualifiedName + " boxed)");
+			sw.WriteLine ("\t\tpublic static explicit operator Gst.GLib.Value (" + QualifiedName + " boxed)");
 			sw.WriteLine ("\t\t{");
 
-			sw.WriteLine ("\t\t\tGLib.Value val = GLib.Value.Empty;");
+			sw.WriteLine ("\t\t\tGst.GLib.Value val = Gst.GLib.Value.Empty;");
 			sw.WriteLine ("\t\t\tval.Init (" + QualifiedName + ".GType);");
 			sw.WriteLine ("\t\t\tval.Val = boxed;");
 			sw.WriteLine ("\t\t\treturn val;");
 			sw.WriteLine ("\t\t}");
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tpublic static explicit operator " + QualifiedName + " (GLib.Value val)");
+			sw.WriteLine ("\t\tpublic static explicit operator " + QualifiedName + " (Gst.GLib.Value val)");
 			sw.WriteLine ("\t\t{");
 
 			sw.WriteLine ("\t\t\treturn (" + QualifiedName + ") val.Val;");
diff -Naur generator-upstream/ByRefGen.cs generator/ByRefGen.cs
--- generator-upstream/ByRefGen.cs	2008-02-26 17:29:14.000000000 +0100
+++ generator/ByRefGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -46,7 +46,7 @@
 
 		public string AllocNative (string var_name)
 		{
-			return "GLib.Marshaller.StructureToPtrAlloc (" + var_name + ")";
+			return "Gst.GLib.Marshaller.StructureToPtrAlloc (" + var_name + ")";
 		}
 
 		public override string FromNative (string var_name)
diff -Naur generator-upstream/CallbackGen.cs generator/CallbackGen.cs
--- generator-upstream/CallbackGen.cs	2009-09-03 21:50:53.000000000 +0200
+++ generator/CallbackGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -140,7 +140,7 @@
 			sw.WriteLine ();
 			sw.WriteLine ("\t\t" + Name + "Native native_cb;");
 			sw.WriteLine ("\t\tIntPtr __data;");
-			sw.WriteLine ("\t\tGLib.DestroyNotify __notify;");
+			sw.WriteLine ("\t\tGst.GLib.DestroyNotify __notify;");
 			sw.WriteLine ();
 			sw.WriteLine ("\t\t~" + Name + "Invoker ()");
 			sw.WriteLine ("\t\t{");
@@ -153,7 +153,7 @@
 			sw.WriteLine ();
 			sw.WriteLine ("\t\tinternal " + Name + "Invoker (" + Name + "Native native_cb, IntPtr data) : this (native_cb, data, null) {}");
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tinternal " + Name + "Invoker (" + Name + "Native native_cb, IntPtr data, GLib.DestroyNotify notify)");
+			sw.WriteLine ("\t\tinternal " + Name + "Invoker (" + Name + "Native native_cb, IntPtr data, Gst.GLib.DestroyNotify notify)");
 			sw.WriteLine ("\t\t{");
 			sw.WriteLine ("\t\t\tthis.native_cb = native_cb;");
 			sw.WriteLine ("\t\t\t__data = data;");
@@ -233,7 +233,7 @@
 			*/
 			bool fatal = (retval.MarshalType != "void" && retval.MarshalType != "bool") || call.HasOutParam;
 			sw.WriteLine ("\t\t\t} catch (Exception e) {");
-			sw.WriteLine ("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (e, " + (fatal ? "true" : "false") + ");");
+			sw.WriteLine ("\t\t\t\tGst.GLib.ExceptionManager.RaiseUnhandledException (e, " + (fatal ? "true" : "false") + ");");
 			if (fatal) {
 				sw.WriteLine ("\t\t\t\t// NOTREACHED: Above call does not return.");
 				sw.WriteLine ("\t\t\t\tthrow e;");
diff -Naur generator-upstream/ConstFilenameGen.cs generator/ConstFilenameGen.cs
--- generator-upstream/ConstFilenameGen.cs	2007-09-21 18:37:04.000000000 +0200
+++ generator/ConstFilenameGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -35,17 +35,17 @@
 		
 		public override string FromNative (string var)
 		{
-			return "GLib.Marshaller.FilenamePtrToString (" + var + ")";
+			return "Gst.GLib.Marshaller.FilenamePtrToString (" + var + ")";
 		}
 
 		public string AllocNative (string managed_var)
 		{
-			return "GLib.Marshaller.StringToFilenamePtr (" + managed_var + ")";
+			return "Gst.GLib.Marshaller.StringToFilenamePtr (" + managed_var + ")";
 		}
 
 		public string ReleaseNative (string native_var)
 		{
-			return "GLib.Marshaller.Free (" + native_var + ")";
+			return "Gst.GLib.Marshaller.Free (" + native_var + ")";
 		}
 	}
 }
diff -Naur generator-upstream/ConstStringGen.cs generator/ConstStringGen.cs
--- generator-upstream/ConstStringGen.cs	2009-08-13 16:46:33.000000000 +0200
+++ generator/ConstStringGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -37,17 +37,17 @@
 		
 		public override string FromNative (string var)
 		{
-			return "GLib.Marshaller.Utf8PtrToString (" + var + ")";
+			return "Gst.GLib.Marshaller.Utf8PtrToString (" + var + ")";
 		}
 
 		public string AllocNative (string managed_var)
 		{
-			return "GLib.Marshaller.StringToPtrGStrdup (" + managed_var + ")";
+			return "Gst.GLib.Marshaller.StringToPtrGStrdup (" + managed_var + ")";
 		}
 
 		public string ReleaseNative (string native_var)
 		{
-			return "GLib.Marshaller.Free (" + native_var + ")";
+			return "Gst.GLib.Marshaller.Free (" + native_var + ")";
 		}
 	}
 }
diff -Naur generator-upstream/Ctor.cs generator/Ctor.cs
--- generator-upstream/Ctor.cs	2009-09-03 21:50:53.000000000 +0200
+++ generator/Ctor.cs	2009-11-25 08:07:47.000000000 +0100
@@ -32,14 +32,16 @@
 		private bool preferred;
 		private string name;
 		private bool needs_chaining = false;
+		private bool mini_object = false;
 
 		public Ctor (XmlElement elem, ClassBase implementor) : base (elem, implementor) 
 		{
 			if (elem.HasAttribute ("preferred"))
 				preferred = true;
-			if (implementor is ObjectGen)
+			if (implementor is ObjectGen || implementor is MiniObjectGen)
 				needs_chaining = true;
 			name = implementor.Name;
+			mini_object = implementor is MiniObjectGen;
 		}
 
 		public bool Preferred {
@@ -110,9 +112,14 @@
 					sw.WriteLine ("\t\t\tif (GetType () != typeof (" + name + ")) {");
 					
 					if (Parameters.Count == 0) {
-						sw.WriteLine ("\t\t\t\tCreateNativeObject (new string [0], new GLib.Value[0]);");
+						if (mini_object)
+						  sw.WriteLine ("\t\t\t\tCreateNativeObject ();");
+						else
+						  sw.WriteLine ("\t\t\t\tCreateNativeObject (new string [0], new Gst.GLib.Value[0]);");
 						sw.WriteLine ("\t\t\t\treturn;");
 					} else {
+						if (mini_object)
+							throw new Exception ("MiniObject subclasses can't have ctors with parameters");
 						ArrayList names = new ArrayList ();
 						ArrayList values = new ArrayList ();
 						for (int i = 0; i < Parameters.Count; i++) {
@@ -137,13 +144,13 @@
 									indent += "\t";
 								}
 								sw.WriteLine (indent + "names.Add (\"" + names [i] + "\");");
-								sw.WriteLine (indent + "vals.Add (new GLib.Value (" + values[i] + "));");
+								sw.WriteLine (indent + "vals.Add (new Gst.GLib.Value (" + values[i] + "));");
 
 								if (p.Generatable is ClassBase && !(p.Generatable is StructBase))
 									sw.WriteLine ("\t\t\t\t}");
 							}
 
-							sw.WriteLine ("\t\t\t\tCreateNativeObject ((string[])names.ToArray (typeof (string)), (GLib.Value[])vals.ToArray (typeof (GLib.Value)));");
+							sw.WriteLine ("\t\t\t\tCreateNativeObject ((string[])names.ToArray (typeof (string)), (Gst.GLib.Value[])vals.ToArray (typeof (Gst.GLib.Value)));");
 							sw.WriteLine ("\t\t\t\treturn;");
 						} else
 							sw.WriteLine ("\t\t\t\tthrow new InvalidOperationException (\"Can't override this constructor.\");");
diff -Naur generator-upstream/DefaultSignalHandler.cs generator/DefaultSignalHandler.cs
--- generator-upstream/DefaultSignalHandler.cs	2009-04-13 19:44:48.000000000 +0200
+++ generator/DefaultSignalHandler.cs	2009-11-25 08:07:47.000000000 +0100
@@ -68,13 +68,13 @@
 		{
 			GenerateMethodBody (sw, implementor);
 			if (retval.IsVoid)
-				sw.WriteLine ("\t\t\tGLib.Value ret = GLib.Value.Empty;");
+				sw.WriteLine ("\t\t\tGst.GLib.Value ret = Gst.GLib.Value.Empty;");
 			else
-				sw.WriteLine ("\t\t\tGLib.Value ret = new GLib.Value (" + ReturnGType + ");");
+				sw.WriteLine ("\t\t\tGst.GLib.Value ret = new Gst.GLib.Value (" + ReturnGType + ");");
 
-			sw.WriteLine ("\t\t\tGLib.ValueArray inst_and_params = new GLib.ValueArray (" + (parms.Count + 1) + ");");
-			sw.WriteLine ("\t\t\tGLib.Value[] vals = new GLib.Value [" + (parms.Count + 1) + "];");
-			sw.WriteLine ("\t\t\tvals [0] = new GLib.Value (this);");
+			sw.WriteLine ("\t\t\tGst.GLib.ValueArray inst_and_params = new Gst.GLib.ValueArray (" + (parms.Count + 1) + ");");
+			sw.WriteLine ("\t\t\tGst.GLib.Value[] vals = new Gst.GLib.Value [" + (parms.Count + 1) + "];");
+			sw.WriteLine ("\t\t\tvals [0] = new Gst.GLib.Value (this);");
 			sw.WriteLine ("\t\t\tinst_and_params.Append (vals [0]);");
 			string cleanup = "";
 			for (int i = 0; i < parms.Count; i++) {
@@ -82,24 +82,24 @@
 				if (p.PassAs != "") {
 					if (SymbolTable.Table.IsBoxed (p.CType)) {
 						if (p.PassAs == "ref")
-							sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new GLib.Value (" + p.Name + ");");
+							sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new Gst.GLib.Value (" + p.Name + ");");
 						else
-							sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new GLib.Value ((GLib.GType)typeof (" + p.CSType + "));");
+							sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new Gst.GLib.Value ((Gst.GLib.GType)typeof (" + p.CSType + "));");
 						cleanup += "\t\t\t" + p.Name + " = (" + p.CSType + ") vals [" + i + "];\n";
 					} else {
 						if (p.PassAs == "ref")
-							sw.WriteLine ("\t\t\tIntPtr " + p.Name + "_ptr = GLib.Marshaller.StructureToPtrAlloc (" + p.Generatable.CallByName (p.Name) + ");");
+							sw.WriteLine ("\t\t\tIntPtr " + p.Name + "_ptr = Gst.GLib.Marshaller.StructureToPtrAlloc (" + p.Generatable.CallByName (p.Name) + ");");
 						else
 							sw.WriteLine ("\t\t\tIntPtr " + p.Name + "_ptr = Marshal.AllocHGlobal (Marshal.SizeOf (typeof (" + p.MarshalType + ")));");
 
-						sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new GLib.Value (" + p.Name + "_ptr);");
+						sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new Gst.GLib.Value (" + p.Name + "_ptr);");
 						cleanup += "\t\t\t" + p.Name + " = " + p.FromNative ("(" + p.MarshalType + ") Marshal.PtrToStructure (" + p.Name + "_ptr, typeof (" + p.MarshalType + "))") + ";\n";
 						cleanup += "\t\t\tMarshal.FreeHGlobal (" + p.Name + "_ptr);\n";
 					}
 				} else if (p.IsLength && i > 0 && parms [i - 1].IsString)
-					sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new GLib.Value (System.Text.Encoding.UTF8.GetByteCount (" + parms [i-1].Name + "));");
+					sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new Gst.GLib.Value (System.Text.Encoding.UTF8.GetByteCount (" + parms [i-1].Name + "));");
 				else
-					sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new GLib.Value (" + p.Name + ");");
+					sw.WriteLine ("\t\t\tvals [" + (i + 1) + "] = new Gst.GLib.Value (" + p.Name + ");");
 
 				sw.WriteLine ("\t\t\tinst_and_params.Append (vals [" + (i + 1) + "]);");
 			}
@@ -107,7 +107,7 @@
 			sw.WriteLine ("\t\t\tg_signal_chain_from_overridden (inst_and_params.ArrayPtr, ref ret);");
 			if (cleanup != "")
 				sw.WriteLine (cleanup);
-			sw.WriteLine ("\t\t\tforeach (GLib.Value v in vals)");
+			sw.WriteLine ("\t\t\tforeach (Gst.GLib.Value v in vals)");
 			sw.WriteLine ("\t\t\t\tv.Dispose ();");
 			if (!retval.IsVoid) {
 				IGeneratable igen = SymbolTable.Table [retval.CType];
@@ -123,7 +123,9 @@
 				IGeneratable igen = SymbolTable.Table [retval.CType];
 
 				if (igen is ObjectGen)
-					return "GLib.GType.Object";
+					return "Gst.GLib.GType.Object";
+				if (igen is MiniObjectGen)
+					return "Gst.MiniObject.GType";
 				if (igen is BoxedGen)
 					return retval.CSType + ".GType";
 				if (igen is EnumGen)
@@ -131,11 +133,11 @@
 
 				switch (retval.CSType) {
 				case "bool":
-					return "GLib.GType.Boolean";
+					return "Gst.GLib.GType.Boolean";
 				case "string":
-					return "GLib.GType.String";
+					return "Gst.GLib.GType.String";
 				case "int":
-					return "GLib.GType.Int";
+					return "Gst.GLib.GType.Int";
 				default:
 					throw new Exception (retval.CSType);
 				}
diff -Naur generator-upstream/EnumGen.cs generator/EnumGen.cs
--- generator-upstream/EnumGen.cs	2009-09-03 21:50:53.000000000 +0200
+++ generator/EnumGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -98,7 +98,7 @@
 			if (Elem.GetAttribute("type") == "flags")
 				sw.WriteLine ("\t[Flags]");
 			if (Elem.HasAttribute("gtype"))
-				sw.WriteLine ("\t[GLib.GType (typeof (" + NS + "." + Name + "GType))]");
+				sw.WriteLine ("\t[Gst.GLib.GType (typeof (" + NS + "." + Name + "GType))]");
 
 			string access = IsInternal ? "internal" : "public";
 			sw.WriteLine ("\t" + access + " enum " + Name + enum_type + " {");
@@ -115,9 +115,9 @@
 				sw.WriteLine ("\t\t[DllImport (\"" + LibraryName + "\", CallingConvention = CallingConvention.Cdecl)]");
 				sw.WriteLine ("\t\tstatic extern IntPtr " + Elem.GetAttribute ("gtype") + " ();");
 				sw.WriteLine ();
-				sw.WriteLine ("\t\tpublic static GLib.GType GType {");
+				sw.WriteLine ("\t\tpublic static Gst.GLib.GType GType {");
 				sw.WriteLine ("\t\t\tget {");
-				sw.WriteLine ("\t\t\t\treturn new GLib.GType (" + Elem.GetAttribute ("gtype") + " ());");
+				sw.WriteLine ("\t\t\t\treturn new Gst.GLib.GType (" + Elem.GetAttribute ("gtype") + " ());");
 				sw.WriteLine ("\t\t\t}");
 				sw.WriteLine ("\t\t}");
 				sw.WriteLine ("\t}");
diff -Naur generator-upstream/FieldBase.cs generator/FieldBase.cs
--- generator-upstream/FieldBase.cs	2009-08-13 16:46:33.000000000 +0200
+++ generator/FieldBase.cs	2009-11-25 08:07:47.000000000 +0100
@@ -89,7 +89,7 @@
 		void CheckGlue ()
 		{
 			getterName = setterName = getOffsetName = null;
-			if (Access != "public")
+			if (DefaultAccess != "public" && (!elem.HasAttribute ("access") || (Access != "public" && Access != "protected" && Access != "internal")))
 				return;
 
 			string prefix = (container_type.NS + "Sharp_" + container_type.NS + "_" + container_type.Name).Replace(".", "__").ToLower ();
@@ -154,8 +154,9 @@
 			StreamWriter sw = gen_info.Writer;
 			string modifiers = elem.HasAttribute ("new_flag") ? "new " : "";
 			bool is_struct = table.IsStruct (CType) || table.IsBoxed (CType);
+			string access = elem.HasAttribute ("access") ? elem.GetAttribute ("access") : "public";
 
-			sw.WriteLine (indent + "public " + modifiers + CSType + " " + Name + " {");
+			sw.WriteLine (indent + access + " " + modifiers + CSType + " " + Name + " {");
 
 			if (Getter != null) {
 				sw.Write (indent + "\tget ");
diff -Naur generator-upstream/gapi3-codegen.in generator/gapi3-codegen.in
diff -Naur generator-upstream/GObjectVM.cs generator/GObjectVM.cs
--- generator-upstream/GObjectVM.cs	2009-08-09 01:42:15.000000000 +0200
+++ generator/GObjectVM.cs	2009-11-25 08:07:47.000000000 +0100
@@ -154,17 +154,17 @@
 				sw.WriteLine ("\t\tpublic static " + Name + "Delegate " + Name + "Handler {");
 				sw.WriteLine ("\t\t\tset {");
 				sw.WriteLine ("\t\t\t\t{0}_handler = value;", CName);
-				sw.WriteLine ("\t\t\t\tOverride{0} ((GLib.GType) typeof ({1}), value == null ? null : {0}VMCallback);", Name, container_type.Name);
+				sw.WriteLine ("\t\t\t\tOverride{0} ((Gst.GLib.GType) typeof ({1}), value == null ? null : {0}VMCallback);", Name, container_type.Name);
 				sw.WriteLine ("\t\t\t}");
 				sw.WriteLine ("\t\t}");
 			} else {
-				sw.WriteLine ("\t\tstatic void Override{0} (GLib.GType gtype)", this.Name);
+				sw.WriteLine ("\t\tstatic void Override{0} (Gst.GLib.GType gtype)", this.Name);
 				sw.WriteLine ("\t\t{");
 				sw.WriteLine ("\t\t\tOverride{0} (gtype, {0}VMCallback);", this.Name);
 				sw.WriteLine ("\t\t}");
 			}
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tstatic void Override{0} (GLib.GType gtype, {0}NativeDelegate callback)", this.Name);
+			sw.WriteLine ("\t\tstatic void Override{0} (Gst.GLib.GType gtype, {0}NativeDelegate callback)", this.Name);
 			sw.WriteLine ("\t\t{");
 		}
 
@@ -181,7 +181,7 @@
 
 		protected void GenerateMethodBody (StreamWriter sw, ClassBase implementor)
 		{
-			sw.WriteLine ("\t\t[GLib.DefaultSignalHandler(Type=typeof(" + (implementor != null ? implementor.QualifiedName : container_type.QualifiedName) + "), ConnectionMethod=\"Override" + this.Name +"\")]");
+			sw.WriteLine ("\t\t[Gst.GLib.DefaultSignalHandler(Type=typeof(" + (implementor != null ? implementor.QualifiedName : container_type.QualifiedName) + "), ConnectionMethod=\"Override" + this.Name +"\")]");
 			sw.Write ("\t\t{0} ", this.Protection);
 			if (this.modifiers != "")
 				sw.Write ("{0} ", this.modifiers);
@@ -261,7 +261,7 @@
 					return "FALSE";
 				case "true":
 					return "TRUE";
-				case "GLib.GType.None":
+				case "Gst.GLib.GType.None":
 					return "G_TYPE_NONE";
 				default:
 					return val;
diff -Naur generator-upstream/gst-codegen.diff generator/gst-codegen.diff
diff -Naur generator-upstream/gst-gapi_codegen.exe generator/gst-gapi_codegen.exe
diff -Naur generator-upstream/gst-gapi_codegen.exe.mdb generator/gst-gapi_codegen.exe.mdb
diff -Naur generator-upstream/InterfaceGen.cs generator/InterfaceGen.cs
--- generator-upstream/InterfaceGen.cs	2009-08-19 18:13:17.000000000 +0200
+++ generator/InterfaceGen.cs	2009-11-25 08:07:47.000000000 +0100
@@ -60,7 +60,7 @@
 
 		public override string CallByName (string var, bool owned)
 		{
-			return String.Format ("{0} == null ? IntPtr.Zero : (({0} is GLib.Object) ? ({0} as GLib.Object).{1} : ({0} as {2}Adapter).{1})", var, owned ? "OwnedHandle" : "Handle", QualifiedName);
+			return String.Format ("{0} == null ? IntPtr.Zero : (({0} is Gst.GLib.Object) ? ({0} as Gst.GLib.Object).{1} : ({0} as {2}Adapter).{1})", var, owned ? "OwnedHandle" : "Handle", QualifiedName);
 		}
 
 		public override string FromNative (string var, bool owned)
@@ -91,7 +91,7 @@
 			sw.WriteLine ();
 			sw.WriteLine ("\t\tstatic " + Name + "Adapter ()");
 			sw.WriteLine ("\t\t{");
-			sw.WriteLine ("\t\t\tGLib.GType.Register (_gtype, typeof({0}Adapter));", Name);
+			sw.WriteLine ("\t\t\tGst.GLib.GType.Register (_gtype, typeof({0}Adapter));", Name);
 			foreach (InterfaceVM vm in interface_vms) {
 				if (vm.IsValid)
 					sw.WriteLine ("\t\t\tiface.{0} = new {0}NativeDelegate ({0}_cb);", vm.Name);
@@ -127,22 +127,22 @@
 		void GenerateCtors (StreamWriter sw)
 		{
 			// Native GObjects do not implement the *Implementor interfaces
-			sw.WriteLine ("\t\tGLib.Object implementor;", Name);
+			sw.WriteLine ("\t\tGst.GLib.Object implementor;", Name);
 			sw.WriteLine ();
 
 			if (!IsConsumeOnly) {
 				sw.WriteLine ("\t\tpublic " + Name + "Adapter ()");
 				sw.WriteLine ("\t\t{");
-				sw.WriteLine ("\t\t\tInitHandler = new GLib.GInterfaceInitHandler (Initialize);");
+				sw.WriteLine ("\t\t\tInitHandler = new Gst.GLib.GInterfaceInitHandler (Initialize);");
 				sw.WriteLine ("\t\t}");
 				sw.WriteLine ();
 				sw.WriteLine ("\t\tpublic {0}Adapter ({0}Implementor implementor)", Name);
 				sw.WriteLine ("\t\t{");
 				sw.WriteLine ("\t\t\tif (implementor == null)");
 				sw.WriteLine ("\t\t\t\tthrow new ArgumentNullException (\"implementor\");");
-				sw.WriteLine ("\t\t\telse if (!(implementor is GLib.Object))");
-				sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"implementor must be a subclass of GLib.Object\");");
-				sw.WriteLine ("\t\t\tthis.implementor = implementor as GLib.Object;");
+				sw.WriteLine ("\t\t\telse if (!(implementor is Gst.GLib.Object))");
+				sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"implementor must be a subclass of Gst.GLib.Object\");");
+				sw.WriteLine ("\t\t\tthis.implementor = implementor as Gst.GLib.Object;");
 				sw.WriteLine ("\t\t}");
 				sw.WriteLine ();
 			}
@@ -151,7 +151,7 @@
 			sw.WriteLine ("\t\t{");
 			sw.WriteLine ("\t\t\tif (!_gtype.IsInstance (handle))");
 			sw.WriteLine ("\t\t\t\tthrow new ArgumentException (\"The gobject doesn't implement the GInterface of this adapter\", \"handle\");");
-			sw.WriteLine ("\t\t\timplementor = GLib.Object.GetObject (handle);");
+			sw.WriteLine ("\t\t\timplementor = Gst.GLib.Object.GetObject (handle);");
 			sw.WriteLine ("\t\t}");
 			sw.WriteLine ();
 		}
@@ -160,9 +160,9 @@
 		{
 			Method m = GetMethod ("GetType");
 			m.GenerateImport (sw);
-			sw.WriteLine ("\t\tprivate static GLib.GType _gtype = new GLib.GType ({0} ());", m.CName);
+			sw.WriteLine ("\t\tprivate static Gst.GLib.GType _gtype = new Gst.GLib.GType ({0} ());", m.CName);
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tpublic override GLib.GType GType {");
+			sw.WriteLine ("\t\tpublic override Gst.GLib.GType GType {");
 			sw.WriteLine ("\t\t\tget {");
 			sw.WriteLine ("\t\t\t\treturn _gtype;");
 			sw.WriteLine ("\t\t\t}");
@@ -190,11 +190,11 @@
 		{
 			sw.WriteLine ("\t\tpublic static " + Name + " GetObject (IntPtr handle, bool owned)");
 			sw.WriteLine ("\t\t{");
-			sw.WriteLine ("\t\t\tGLib.Object obj = GLib.Object.GetObject (handle, owned);");
+			sw.WriteLine ("\t\t\tGst.GLib.Object obj = Gst.GLib.Object.GetObject (handle, owned);");
 			sw.WriteLine ("\t\t\treturn GetObject (obj);");
 			sw.WriteLine ("\t\t}");
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tpublic static " + Name + " GetObject (GLib.Object obj)");
+			sw.WriteLine ("\t\tpublic static " + Name + " GetObject (Gst.GLib.Object obj)");
 			sw.WriteLine ("\t\t{");
 			sw.WriteLine ("\t\t\tif (obj == null)");
 			sw.WriteLine ("\t\t\t\treturn null;");
@@ -230,7 +230,7 @@
 			sw.WriteLine ("\tusing System.Runtime.InteropServices;");
 			sw.WriteLine ();
 			sw.WriteLine ("#region Autogenerated code");
-			sw.WriteLine ("\tpublic partial class " + Name + "Adapter : GLib.GInterfaceAdapter, " + QualifiedName + " {");
+			sw.WriteLine ("\tpublic partial class " + Name + "Adapter : Gst.GLib.GInterfaceAdapter, " + QualifiedName + " {");
 			sw.WriteLine ();
 
 			if (!IsConsumeOnly) {
@@ -249,7 +249,7 @@
 			GenProperties (gen_info, null);
 
 			foreach (Signal sig in sigs.Values)
-				sig.GenEvent (sw, null, "GLib.Object.GetObject (Handle)");
+				sig.GenEvent (sw, null, "Gst.GLib.Object.GetObject (Handle)");
 
 			Method temp = methods ["GetType"] as Method;
 			if (temp != null)
@@ -275,9 +275,9 @@
 				return;
 
 			sw.WriteLine ();
-			sw.WriteLine ("\t[GLib.GInterface (typeof (" + Name + "Adapter))]");
+			sw.WriteLine ("\t[Gst.GLib.GInterface (typeof (" + Name + "Adapter))]");
 			string access = IsInternal ? "internal" : "public";
-			sw.WriteLine ("\t" + access + " partial interface " + Name + "Implementor : GLib.IWrapper {");
+			sw.WriteLine ("\t" + access + " partial interface " + Name + "Implementor : Gst.GLib.IWrapper {");
 			sw.WriteLine ();
 			Hashtable vm_table = new Hashtable ();
 			foreach (InterfaceVM vm in interface_vms) {
@@ -323,7 +323,7 @@
 			sw.WriteLine ();
 			sw.WriteLine ("#region Autogenerated code");
 			string access = IsInternal ? "internal" : "public";
-			sw.WriteLine ("\t" + access + " partial interface " + Name + " : GLib.IWrapper {");
+			sw.WriteLine ("\t" + access + " partial interface " + Name + " : Gst.GLib.IWrapper {");
 			sw.WriteLine ();
 			
 			foreach (Signal sig in sigs.Values) {
diff -Naur generator-upstream/Makefile generator/Makefile
diff -Naur generator-upstream/Makefile.am generator/Makefile.am
diff -Naur generator-upstream/Makefile.in generator/Makefile.in
diff -Naur generator-upstream/ManagedCallString.cs generator/ManagedCallString.cs
--- generator-upstream/ManagedCallString.cs	2009-08-13 16:46:33.000000000 +0200
+++ generator/ManagedCallString.cs	2009-11-25 08:07:47.000000000 +0100
@@ -50,12 +50,15 @@
 					error_param = p.Name;
 					continue;
 				}
+
 				this.parms.Add (p);
 
 				if (p.PassAs != String.Empty && (p.Name != p.FromNative (p.Name)))
 					this.special.Add (true);
 				else if (p.Generatable is CallbackGen)
 					this.special.Add (true);
+				else if (p.Scope == "call")
+					this.special.Add (true);
 				else
 					this.special.Add (false);
 			}
@@ -96,6 +99,11 @@
 						ret += indent + String.Format ("{0} {1}_invoker = new {0} ({1}, {2});\n", (igen as CallbackGen).InvokerName, p.Name, user_data_param);
 					else
 						ret += indent + String.Format ("{0} {1}_invoker = new {0} ({1}, {2}, {3});\n", (igen as CallbackGen).InvokerName, p.Name, user_data_param, destroy_param);
+				} else if (p.Scope == "call") {
+					if (igen is ObjectBase)
+						ret += indent + igen.QualifiedName + " my" + p.Name + " = " + (igen as ObjectBase).FromNative (p.Name, true) + ";\n";
+					else
+						throw new NotImplementedException();
 				} else {
 					ret += indent + igen.QualifiedName + " my" + p.Name;
 					if (p.PassAs == "ref")
@@ -137,16 +145,25 @@
 				Parameter p = parms [i] as Parameter;
 				IGeneratable igen = p.Generatable;
 
-				if (igen is CallbackGen)
+				if (igen is CallbackGen) {
 					continue;
-				else if (igen is StructBase || igen is ByRefGen)
+				} else if (igen is StructBase || igen is ByRefGen) {
 					ret += indent + String.Format ("if ({0} != IntPtr.Zero) System.Runtime.InteropServices.Marshal.StructureToPtr (my{0}, {0}, false);\n", p.Name);
-				else if (igen is IManualMarshaler)
+				} else if (igen is IManualMarshaler) {
 					ret += String.Format ("{0}{1} = {2};", indent, p.Name, (igen as IManualMarshaler).AllocNative ("my" + p.Name));
-				else
+				} else if (p.Scope == "call") {
+					if (igen is ObjectBase || igen is OpaqueGen) {
+						if (igen is ObjectBase)
+							ret += indent + "IntPtr dummy = my" + p.Name + ".OwnedHandle;\n";
+						else
+							throw new NotImplementedException();
+
+						ret += indent + "my" + p.Name + ".Dispose();\n";
+					}
+				} else {
 					ret += indent + p.Name + " = " + igen.CallByName ("my" + p.Name) + ";\n";
+				}
 			}
-
 			return ret;
 		}
 	}
diff -Naur generator-upstream/MethodBody.cs generator/MethodBody.cs
--- generator-upstream/MethodBody.cs	2009-01-07 18:10:08.000000000 +0100
+++ generator/MethodBody.cs	2009-11-25 08:07:47.000000000 +0100
@@ -111,7 +111,7 @@
 						sw.WriteLine (indent + "\t\t\t\t{0} = null;", parameters [i + 2].Name);
 						sw.WriteLine (indent + "\t\t\t} else {");
 						sw.WriteLine (indent + "\t\t\t\t{0} = (IntPtr) GCHandle.Alloc ({1}_wrapper);", parameters [i + 1].Name, name);
-						sw.WriteLine (indent + "\t\t\t\t{0} = GLib.DestroyHelper.NotifyHandler;", parameters [i + 2].Name, parameters [i + 2].CSType);
+						sw.WriteLine (indent + "\t\t\t\t{0} = Gst.GLib.DestroyHelper.NotifyHandler;", parameters [i + 2].Name, parameters [i + 2].CSType);
 						sw.WriteLine (indent + "\t\t\t}");
 						break;
 
@@ -154,7 +154,7 @@
 		{
 			if (!ThrowsException)
 				return;
-			sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new GLib.GException (error);");
+			sw.WriteLine (indent + "\t\t\tif (error != IntPtr.Zero) throw new Gst.GLib.GException (error);");
 		}
 		
 		public bool ThrowsException {
diff -Naur generator-upstream/Method.cs generator/Method.cs
--- generator-upstream/Method.cs	2009-09-03 21:50:53.000000000 +0200
+++ generator/Method.cs	2009-11-25 08:07:47.000000000 +0100
@@ -118,7 +118,7 @@
 
 			if (Name == "ToString" && Parameters.Count == 0)
 				sw.Write("override ");
-			else if (Name == "GetGType" && container_type is ObjectGen)
+			else if (Name == "GetGType" && (container_type is ObjectGen || container_type is MiniObjectGen))
 				sw.Write("new ");
 			else if (Modifiers == "new " || (dup != null && ((dup.Signature != null && Signature != null && dup.Signature.ToString() == Signature.ToString()) || (dup.Signature == null && Signature == null))))
 				sw.Write("new ");
diff -Naur generator-upstream/MiniObjectGen.cs generator/MiniObjectGen.cs
--- generator-upstream/MiniObjectGen.cs	1970-01-01 01:00:00.000000000 +0100
+++ generator/MiniObjectGen.cs	2009-10-03 11:56:16.000000000 +0200
@@ -0,0 +1,326 @@
+// GtkSharp.Generation.MiniObjectGen.cs - The Mini Object Generatable.
+//
+// Author: Mike Kestner <mkestner@ximian.com>
+//
+// Copyright (c) 2001-2003 Mike Kestner
+// Copyright (c) 2003-2004 Novell, Inc.
+// Copyright (c) 2009 Sebastian Dröge <sebastian.droege@collabora.co.uk>.
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of version 2 of the GNU General Public
+// License as published by the Free Software Foundation.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public
+// License along with this program; if not, write to the
+// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+
+namespace GtkSharp.Generation {
+
+	using System;
+	using System.Collections;
+	using System.IO;
+	using System.Text;
+	using System.Xml;
+
+	public class MiniObjectGen : ObjectBase  {
+
+		private ArrayList custom_attrs = new ArrayList();
+		private ArrayList strings = new ArrayList();
+		private static Hashtable dirs = new Hashtable ();
+
+		public MiniObjectGen (XmlElement ns, XmlElement elem) : base (ns, elem, false) 
+		{
+			foreach (XmlNode node in elem.ChildNodes) {
+				if (!(node is XmlElement)) continue;
+				XmlElement member = (XmlElement) node;
+				if (member.HasAttribute ("hidden") && member.GetAttribute ("hidden") == "1") continue;
+
+				switch (node.Name) {
+				case "custom-attribute":
+					custom_attrs.Add (member.InnerXml);
+					break;
+
+				case "static-string":
+					strings.Add (node);
+					break;
+
+				default:
+					if (!IsNodeNameHandled (node.Name))
+						Console.WriteLine ("Unexpected node " + node.Name + " in " + CName);
+					break;
+				}
+			}
+		}
+
+		public override string CallByName (string var, bool owned)
+		{
+			return String.Format ("{0} == null ? IntPtr.Zero : {0}.{1}", var, owned ? "OwnedHandle" : "Handle");
+		}
+
+		public override bool Validate ()
+		{
+			ArrayList invalids = new ArrayList ();
+
+			return base.Validate ();
+		}
+
+		private bool DisableVoidCtor {
+			get {
+				return Elem.HasAttribute ("disable_void_ctor");
+			}
+		}
+
+		private bool DisableGTypeCtor {
+			get {
+				return Elem.HasAttribute ("disable_gtype_ctor");
+			}
+		}
+
+		private class DirectoryInfo {
+			public string assembly_name;
+			public Hashtable objects;
+
+			public DirectoryInfo (string assembly_name) {
+				this.assembly_name = assembly_name;
+				objects = new Hashtable ();
+			}
+		}
+
+		private static DirectoryInfo GetDirectoryInfo (string dir, string assembly_name)
+		{
+			DirectoryInfo result;
+
+			if (dirs.ContainsKey (dir)) {
+				result = dirs [dir] as DirectoryInfo;
+				if  (result.assembly_name != assembly_name) {
+					Console.WriteLine ("Can't put multiple assemblies in one directory.");
+					return null;
+				}
+
+				return result;
+			}
+
+			result = new DirectoryInfo (assembly_name);
+			dirs.Add (dir, result);
+			
+			return result;
+		}
+
+		public override void Generate (GenerationInfo gen_info)
+		{
+			gen_info.CurrentType = Name;
+
+			string asm_name = gen_info.AssemblyName.Length == 0 ? NS.ToLower () + "-sharp" : gen_info.AssemblyName;
+			DirectoryInfo di = GetDirectoryInfo (gen_info.Dir, asm_name);
+
+			StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
+
+			sw.WriteLine ("namespace " + NS + " {");
+			sw.WriteLine ();
+			sw.WriteLine ("\tusing System;");
+			sw.WriteLine ("\tusing System.Collections;");
+			sw.WriteLine ("\tusing System.Runtime.InteropServices;");
+			sw.WriteLine ();
+
+			SymbolTable table = SymbolTable.Table;
+
+			sw.WriteLine ("#region Autogenerated code");
+			if (IsDeprecated)
+				sw.WriteLine ("\t[Obsolete]");
+			foreach (string attr in custom_attrs)
+				sw.WriteLine ("\t" + attr);
+			sw.Write ("\t{0} {1}class " + Name, IsInternal ? "internal" : "public", IsAbstract ? "abstract " : "");
+			string cs_parent = table.GetCSType(Elem.GetAttribute("parent"));
+			if (cs_parent != "") {
+				di.objects.Add (CName, QualifiedName);
+				sw.Write (" : " + cs_parent);
+			}
+			foreach (string iface in managed_interfaces) {
+				if (Parent != null && Parent.Implements (iface))
+					continue;
+				sw.Write (", " + iface);
+			}
+			sw.WriteLine (" {");
+			sw.WriteLine ();
+
+			GenCtors (gen_info);
+			GenFields (gen_info);
+			
+			GenClassMembers (gen_info, cs_parent);
+			GenMethods (gen_info, null, null);
+			
+			foreach (XmlElement str in strings) {
+				sw.Write ("\t\tpublic static string " + str.GetAttribute ("name"));
+				sw.WriteLine (" {\n\t\t\t get { return \"" + str.GetAttribute ("value") + "\"; }\n\t\t}");
+			}
+
+			if (cs_parent != String.Empty && GetExpected (CName) != QualifiedName) {
+				sw.WriteLine ();
+				sw.WriteLine ("\t\tstatic " + Name + " ()");
+				sw.WriteLine ("\t\t{");
+				sw.WriteLine ("\t\t\tGtkSharp." + Studlify (asm_name) + ".ObjectManager.Initialize ();");
+				sw.WriteLine ("\t\t}");
+			}
+
+			sw.WriteLine ("#endregion");
+			AppendCustom (sw, gen_info.CustomDir);
+
+			sw.WriteLine ("\t}");
+			sw.WriteLine ("}");
+
+			sw.Close ();
+			gen_info.Writer = null;
+			Statistics.ObjectCount++;
+		}
+
+		protected override void GenCtors (GenerationInfo gen_info)
+		{
+			if (!Elem.HasAttribute("parent"))
+				return;
+
+			if (!DisableGTypeCtor) {
+				gen_info.Writer.WriteLine("\t\t[Obsolete]");
+				gen_info.Writer.WriteLine("\t\tprotected " + Name + "(Gst.GLib.GType gtype) : base(gtype) {}");
+			}
+			gen_info.Writer.WriteLine("\t\tpublic " + Name + "(IntPtr raw) : base(raw) {}");
+			if (ctors.Count == 0 && !DisableVoidCtor) {
+				gen_info.Writer.WriteLine();
+				gen_info.Writer.WriteLine("\t\tprotected " + Name + "() : base(IntPtr.Zero)");
+				gen_info.Writer.WriteLine("\t\t{");
+				gen_info.Writer.WriteLine("\t\t\tCreateNativeObject ();");
+				gen_info.Writer.WriteLine("\t\t}");
+			}
+			gen_info.Writer.WriteLine();
+
+			base.GenCtors (gen_info);
+		}
+
+		void GenClassMembers (GenerationInfo gen_info, string cs_parent)
+		{
+			GenVirtualMethods (gen_info, null);
+
+			if (class_struct_name == null || !CanGenerateClassStruct) return;
+			StreamWriter sw = gen_info.Writer;
+			GenerateClassStruct (gen_info);
+			if (cs_parent == "")
+				sw.WriteLine ("\t\tstatic uint class_offset = 0;");
+			else
+				sw.WriteLine ("\t\tstatic uint class_offset = ((Gst.GLib.GType) typeof ({0})).GetClassSize ();", cs_parent);
+			sw.WriteLine ("\t\tstatic Hashtable class_structs;");
+			sw.WriteLine ();
+			sw.WriteLine ("\t\tstatic {0} GetClassStruct (Gst.GLib.GType gtype, bool use_cache)", class_struct_name);
+			sw.WriteLine ("\t\t{");
+			sw.WriteLine ("\t\t\tif (class_structs == null)");
+			sw.WriteLine ("\t\t\t\tclass_structs = new Hashtable ();");
+			sw.WriteLine ();
+			sw.WriteLine ("\t\t\tif (use_cache && class_structs.Contains (gtype))");
+			sw.WriteLine ("\t\t\t\treturn ({0}) class_structs [gtype];", class_struct_name);
+			sw.WriteLine ("\t\t\telse {");
+			sw.WriteLine ("\t\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);");
+			sw.WriteLine ("\t\t\t\t{0} class_struct = ({0}) Marshal.PtrToStructure (class_ptr, typeof ({0}));", class_struct_name);
+			sw.WriteLine ("\t\t\t\tif (use_cache)");
+			sw.WriteLine ("\t\t\t\t\tclass_structs.Add (gtype, class_struct);");
+			sw.WriteLine ("\t\t\t\treturn class_struct;");
+			sw.WriteLine ("\t\t\t}");
+			sw.WriteLine ("\t\t}");
+			sw.WriteLine ();
+			sw.WriteLine ("\t\tstatic void OverrideClassStruct (Gst.GLib.GType gtype, {0} class_struct)", class_struct_name);
+			sw.WriteLine ("\t\t{");
+			sw.WriteLine ("\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);");
+			sw.WriteLine ("\t\t\tMarshal.StructureToPtr (class_struct, class_ptr, false);");
+			sw.WriteLine ("\t\t}");
+			sw.WriteLine ();
+		}
+
+		/* Keep this in sync with the one in glib/GType.cs */
+		private static string GetExpected (string cname)
+		{
+			for (int i = 1; i < cname.Length; i++) {
+				if (Char.IsUpper (cname[i])) {
+					if (i == 1 && cname[0] == 'G')
+						return "Gst.GLib." + cname.Substring (1);
+					else
+						return cname.Substring (0, i) + "." + cname.Substring (i);
+				}
+			}
+
+			throw new ArgumentException ("cname doesn't follow the NamespaceType capitalization style: " + cname);
+		}
+
+		private static bool NeedsMap (Hashtable objs, string assembly_name)
+		{
+			foreach (string key in objs.Keys)
+				if (GetExpected (key) != ((string) objs[key]))
+					return true;
+			
+			return false;
+		}
+
+		private static string Studlify (string name)
+		{
+			string result = "";
+
+			string[] subs = name.Split ('-');
+			foreach (string sub in subs)
+				result += Char.ToUpper (sub[0]) + sub.Substring (1);
+				
+			return result;
+		}
+				
+		public static void GenerateMappers ()
+		{
+			foreach (string dir in dirs.Keys) {
+
+				DirectoryInfo di = dirs[dir] as DirectoryInfo;
+
+				if (!NeedsMap (di.objects, di.assembly_name))
+					continue;
+	
+				GenerationInfo gen_info = new GenerationInfo (dir, di.assembly_name);
+
+				GenerateMapper (di, gen_info);
+			}
+		}
+
+		private static void GenerateMapper (DirectoryInfo dir_info, GenerationInfo gen_info)
+		{
+			StreamWriter sw = gen_info.OpenStream ("ObjectManager");
+
+			sw.WriteLine ("namespace GtkSharp." + Studlify (dir_info.assembly_name) + " {");
+			sw.WriteLine ();
+			sw.WriteLine ("\tpublic class ObjectManager {");
+			sw.WriteLine ();
+			sw.WriteLine ("\t\tstatic bool initialized = false;");
+			sw.WriteLine ("\t\t// Call this method from the appropriate module init function.");
+			sw.WriteLine ("\t\tpublic static void Initialize ()");
+			sw.WriteLine ("\t\t{");
+			sw.WriteLine ("\t\t\tif (initialized)");
+			sw.WriteLine ("\t\t\t\treturn;");
+			sw.WriteLine ("");
+			sw.WriteLine ("\t\t\tinitialized = true;");
+	
+			foreach (string key in dir_info.objects.Keys) {
+				if (GetExpected(key) != ((string) dir_info.objects[key]))
+					sw.WriteLine ("\t\t\tGst.GLib.GType.Register ({0}.GType, typeof ({0}));", dir_info.objects [key]);
+			}
+					
+			sw.WriteLine ("\t\t}");
+			sw.WriteLine ("\t}");
+			sw.WriteLine ("}");
+			sw.Close ();
+		}
+
+		public override string FromNative (string var, bool owned)
+		{
+			return "Gst.MiniObject.GetObject(" + var + (owned ? ", true" : "") + ") as " + QualifiedName;
+		}
+	}
+}
+
diff -Naur generator-upstream/MiniObjectGen.cs.rej generator/MiniObjectGen.cs.rej
diff -Naur generator-upstream/ObjectBase.cs generator/ObjectBase.cs
--- generator-upstream/ObjectBase.cs	2009-08-05 08:24:27.000000000 +0200
+++ generator/ObjectBase.cs	2009-11-25 08:07:54.000000000 +0100
@@ -164,7 +164,7 @@
 
 		public override string FromNative (string var, bool owned)
 		{
-			return "GLib.Object.GetObject(" + var + (owned ? ", true" : "") + ") as " + QualifiedName;
+			return "Gst.GLib.Object.GetObject(" + var + (owned ? ", true" : "") + ") as " + QualifiedName;
 		}
 
 		public string ClassStructName {
diff -Naur generator-upstream/ObjectGen.cs generator/ObjectGen.cs
--- generator-upstream/ObjectGen.cs	2009-08-19 18:13:17.000000000 +0200
+++ generator/ObjectGen.cs	2009-11-25 08:07:54.000000000 +0100
@@ -253,7 +253,7 @@
 				gen_info.Writer.WriteLine();
 				gen_info.Writer.WriteLine("\t\tprotected " + Name + "() : base(IntPtr.Zero)");
 				gen_info.Writer.WriteLine("\t\t{");
-				gen_info.Writer.WriteLine("\t\t\tCreateNativeObject (new string [0], new GLib.Value [0]);");
+				gen_info.Writer.WriteLine("\t\t\tCreateNativeObject (new string [0], new Gst.GLib.Value [0]);");
 				gen_info.Writer.WriteLine("\t\t}");
 			}
 			gen_info.Writer.WriteLine();
@@ -302,10 +302,10 @@
 			if (cs_parent == "")
 				sw.WriteLine ("\t\tstatic uint class_offset = 0;");
 			else
-				sw.WriteLine ("\t\tstatic uint class_offset = ((GLib.GType) typeof ({0})).GetClassSize ();", cs_parent);
+				sw.WriteLine ("\t\tstatic uint class_offset = ((Gst.GLib.GType) typeof ({0})).GetClassSize ();", cs_parent);
 			sw.WriteLine ("\t\tstatic Hashtable class_structs;");
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tstatic {0} GetClassStruct (GLib.GType gtype, bool use_cache)", class_struct_name);
+			sw.WriteLine ("\t\tstatic {0} GetClassStruct (Gst.GLib.GType gtype, bool use_cache)", class_struct_name);
 			sw.WriteLine ("\t\t{");
 			sw.WriteLine ("\t\t\tif (class_structs == null)");
 			sw.WriteLine ("\t\t\t\tclass_structs = new Hashtable ();");
@@ -321,7 +321,7 @@
 			sw.WriteLine ("\t\t\t}");
 			sw.WriteLine ("\t\t}");
 			sw.WriteLine ();
-			sw.WriteLine ("\t\tstatic void OverrideClassStruct (GLib.GType gtype, {0} class_struct)", class_struct_name);
+			sw.WriteLine ("\t\tstatic void OverrideClassStruct (Gst.GLib.GType gtype, {0} class_struct)", class_struct_name);
 			sw.WriteLine ("\t\t{");
 			sw.WriteLine ("\t\t\tIntPtr class_ptr = new IntPtr (gtype.GetClassPtr ().ToInt64 () + class_offset);");
 			sw.WriteLine ("\t\t\tMarshal.StructureToPtr (class_struct, class_ptr, false);");
@@ -335,7 +335,7 @@
 			for (int i = 1; i < cname.Length; i++) {
 				if (Char.IsUpper (cname[i])) {
 					if (i == 1 && cname[0] == 'G')
-						return "GLib." + cname.Substring (1);
+						return "Gst.GLib." + cname.Substring (1);
 					else
 						return cname.Substring (0, i) + "." + cname.Substring (i);
 				}
@@ -398,7 +398,7 @@
 	
 			foreach (string key in dir_info.objects.Keys) {
 				if (GetExpected(key) != ((string) dir_info.objects[key]))
-					sw.WriteLine ("\t\t\tGLib.GType.Register ({0}.GType, typeof ({0}));", dir_info.objects [key]);
+					sw.WriteLine ("\t\t\tGst.GLib.GType.Register ({0}.GType, typeof ({0}));", dir_info.objects [key]);
 			}
 					
 			sw.WriteLine ("\t\t}");
diff -Naur generator-upstream/OpaqueGen.cs generator/OpaqueGen.cs
--- generator-upstream/OpaqueGen.cs	2009-08-19 18:13:17.000000000 +0200
+++ generator/OpaqueGen.cs	2009-11-25 08:07:54.000000000 +0100
@@ -32,7 +32,7 @@
 	
 		public override string FromNative(string var, bool owned)
 		{
-			return var + " == IntPtr.Zero ? null : (" + QualifiedName + ") GLib.Opaque.GetOpaque (" + var + ", typeof (" + QualifiedName + "), " + (owned ? "true" : "false") + ")";
+			return var + " == IntPtr.Zero ? null : (" + QualifiedName + ") Gst.GLib.Opaque.GetOpaque (" + var + ", typeof (" + QualifiedName + "), " + (owned ? "true" : "false") + ")";
 		}
 
 		private bool DisableRawCtor {
@@ -68,7 +68,7 @@
 			if (cs_parent != "")
 				sw.Write (" : " + cs_parent);
 			else
-				sw.Write (" : GLib.Opaque");
+				sw.Write (" : Gst.GLib.Opaque");
 
 			foreach (string iface in managed_interfaces) {
 				if (Parent != null && Parent.Implements (iface))
@@ -165,7 +165,7 @@
 				sw.WriteLine ("\t\t\tif (!Owned)");
 				sw.WriteLine ("\t\t\t\treturn;");
 				sw.WriteLine ("\t\t\tFinalizerInfo info = new FinalizerInfo (Handle);");
-				sw.WriteLine ("\t\t\tGLib.Timeout.Add (50, new GLib.TimeoutHandler (info.Handler));");
+				sw.WriteLine ("\t\t\tGst.GLib.Timeout.Add (50, new Gst.GLib.TimeoutHandler (info.Handler));");
 				sw.WriteLine ("\t\t}");
 				sw.WriteLine ();
 			}
@@ -173,9 +173,9 @@
 #if false
 			Method copy = Methods ["Copy"] as Method;
 			if (copy != null && copy.Parameters.Count == 0) {
-				sw.WriteLine ("\t\tprotected override GLib.Opaque Copy (IntPtr raw)");
+				sw.WriteLine ("\t\tprotected override Gst.GLib.Opaque Copy (IntPtr raw)");
 				sw.WriteLine ("\t\t{");
-				sw.WriteLine ("\t\t\tGLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));");
+				sw.WriteLine ("\t\t\tGst.GLib.Opaque result = new " + QualifiedName + " (" + copy.CName + " (raw));");
 				sw.WriteLine ("\t\t\tresult.Owned = true;");
 				sw.WriteLine ("\t\t\treturn result;");
 				sw.WriteLine ("\t\t}");
diff -Naur generator-upstream/Parameters.cs generator/Parameters.cs
--- generator-upstream/Parameters.cs	2009-07-13 00:01:52.000000000 +0200
+++ generator/Parameters.cs	2009-11-25 08:07:54.000000000 +0100
@@ -263,9 +263,9 @@
 				} else if (gen is IManualMarshaler)
 					call_parm = "native_" + CallName;
 				else if (gen is ObjectBase)
-					call_parm = (gen as ObjectBase).CallByName (CallName, Owned);
+					call_parm = (gen as ObjectBase).CallByName(CallName, Owned);
 				else
-					call_parm = gen.CallByName (CallName);
+					call_parm = gen.CallByName(CallName);
 			
 				return call_parm;
 			}
diff -Naur generator-upstream/Parser.cs generator/Parser.cs
--- generator-upstream/Parser.cs	2009-04-13 19:44:48.000000000 +0200
+++ generator/Parser.cs	2009-11-25 08:07:54.000000000 +0100
@@ -138,6 +138,9 @@
 				case "object":
 					result.Add (new ObjectGen (ns, elem));
 					break;
+				case "mini-object":
+					result.Add (new MiniObjectGen (ns, elem));
+					break;
 				case "class":
 					result.Add (new ClassGen (ns, elem));
 					break;
diff -Naur generator-upstream/Property.cs generator/Property.cs
--- generator-upstream/Property.cs	2008-09-17 01:21:50.000000000 +0200
+++ generator/Property.cs	2009-11-25 08:07:54.000000000 +0100
@@ -64,7 +64,7 @@
 		}
 
 		protected virtual string PropertyAttribute (string qpname) {
-			return "[GLib.Property (" + qpname + ")]";
+			return "[Gst.GLib.Property (" + qpname + ")]";
 		}
 
 		protected virtual string RawGetter (string qpname) {
@@ -117,9 +117,9 @@
 
 			string v_type = "";
 			if (table.IsInterface (CType)) {
-				v_type = "(GLib.Object)";
+				v_type = "(Gst.GLib.Object)";
 			} else if (table.IsOpaque (CType)) {
-				v_type = "(GLib.Opaque)";
+				v_type = "(Gst.GLib.Opaque)";
 			} else if (table.IsEnum (CType)) {
 				v_type = "(Enum)";
 			}
@@ -140,12 +140,12 @@
 				sw.WriteLine();
 			} else if (Readable) {
 				sw.WriteLine(indent + "get {");
-				sw.WriteLine(indent + "\tGLib.Value val = " + RawGetter (qpname) + ";");
+				sw.WriteLine(indent + "\tGst.GLib.Value val = " + RawGetter (qpname) + ";");
 				if (table.IsOpaque (CType) || table.IsBoxed (CType)) {
 					sw.WriteLine(indent + "\t" + CSType + " ret = (" + CSType + ") val;");
 				} else if (table.IsInterface (CType)) {
-					// Do we have to dispose the GLib.Object from the GLib.Value?
-					sw.WriteLine (indent + "\t{0} ret = {0}Adapter.GetObject ((GLib.Object) val);", CSType);
+					// Do we have to dispose the Gst.GLib.Object from the Gst.GLib.Value?
+					sw.WriteLine (indent + "\t{0} ret = {0}Adapter.GetObject ((Gst.GLib.Object) val);", CSType);
 				} else {
 					sw.Write(indent + "\t" + CSType + " ret = ");
 					sw.Write ("(" + CSType + ") ");
@@ -166,13 +166,13 @@
 				sw.WriteLine();
 			} else if (Writable) {
 				sw.WriteLine(indent + "set {");
-				sw.Write(indent + "\tGLib.Value val = ");
+				sw.Write(indent + "\tGst.GLib.Value val = ");
 				if (table.IsBoxed (CType)) {
-					sw.WriteLine("(GLib.Value) value;");
+					sw.WriteLine("(Gst.GLib.Value) value;");
 				} else if (table.IsOpaque (CType)) {
-					sw.WriteLine("new GLib.Value(value, \"{0}\");", CType);
+					sw.WriteLine("new Gst.GLib.Value(value, \"{0}\");", CType);
 				} else {
-					sw.Write("new GLib.Value(");
+					sw.Write("new Gst.GLib.Value(");
 					if (v_type != "" && !(table.IsObject (CType) || table.IsInterface (CType) || table.IsOpaque (CType))) {
 						sw.Write(v_type + " ");
 					}
diff -Naur generator-upstream/ReturnValue.cs generator/ReturnValue.cs
--- generator-upstream/ReturnValue.cs	2009-09-23 23:27:15.000000000 +0200
+++ generator/ReturnValue.cs	2009-11-25 08:07:54.000000000 +0100
@@ -114,7 +114,9 @@
 			get {
 				if (IGen == null)
 					return String.Empty;
-				return IGen.MarshalType + (is_array || is_null_term ? "[]" : String.Empty);
+				else if (is_null_term)
+					return "IntPtr";
+				return IGen.MarshalType + (is_array ? "[]" : String.Empty);
 			}
 		}
 
@@ -125,14 +127,14 @@
 
 			if (ElementType != String.Empty) {
 				string args = (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false");
-				if (IGen.QualifiedName == "GLib.PtrArray")
-					return String.Format ("({0}[]) GLib.Marshaller.PtrArrayToArray ({1}, {2}, typeof({0}))", ElementType, var, args);
+				if (IGen.QualifiedName == "Gst.GLib.PtrArray")
+					return String.Format ("({0}[]) Gst.GLib.Marshaller.PtrArrayToArray ({1}, {2}, typeof({0}))", ElementType, var, args);
 				else
-					return String.Format ("({0}[]) GLib.Marshaller.ListPtrToArray ({1}, typeof({2}), {3}, typeof({4}))", ElementType, var, IGen.QualifiedName, args, element_ctype == "gfilename*" ? "GLib.ListBase.FilenameString" : ElementType);
+					return String.Format ("({0}[]) Gst.GLib.Marshaller.ListPtrToArray ({1}, typeof({2}), {3}, typeof({4}))", ElementType, var, IGen.QualifiedName, args, element_ctype == "gfilename*" ? "Gst.GLib.ListBase.FilenameString" : ElementType);
 			} else if (IGen is HandleBase)
 				return ((HandleBase)IGen).FromNative (var, owned);
 			else if (is_null_term)
-				return String.Format ("GLib.Marshaller.NullTermPtrToStringArray ({0}, {1})", var, owned ? "true" : "false");
+				return String.Format ("Gst.Marshaller.NullTermPtrToStringArray ({0}, {1})", var, owned ? "true" : "false");
 			else
 				return IGen.FromNative (var);
 		}
@@ -146,11 +148,11 @@
 				string args = ", typeof (" + ElementType + "), " + (owned ? "true" : "false") + ", " + (elements_owned ? "true" : "false");
 				var = "new " + IGen.QualifiedName + "(" + var + args + ")";
 			} else if (is_null_term)
-				return String.Format ("GLib.Marshaller.StringArrayToNullTermPointer ({0})", var);
+				return String.Format ("Gst.Marshaller.StringArrayToNullTermPointer ({0})", var);
 
 			if (IGen is IManualMarshaler)
 				return (IGen as IManualMarshaler).AllocNative (var);
-			else if (IGen is ObjectGen && owned)
+			else if ((IGen is ObjectGen || IGen is MiniObjectGen) && owned)
 				return var + " == null ? IntPtr.Zero : " + var + ".OwnedHandle";
 			else if (IGen is OpaqueGen && owned)
 				return var + " == null ? IntPtr.Zero : " + var + ".OwnedCopy";
diff -Naur generator-upstream/Signal.cs generator/Signal.cs
--- generator-upstream/Signal.cs	2009-11-23 18:19:46.000000000 +0100
+++ generator/Signal.cs	2009-11-25 08:08:27.000000000 +0100
@@ -204,7 +204,7 @@
 			}
 			sw.WriteLine("\t\t\t} catch (Exception) {");
 			sw.WriteLine ("\t\t\t\tException ex = new Exception (\"args.RetVal or 'out' property unset or set to incorrect type in " + EventHandlerQualifiedName + " callback\");");
-			sw.WriteLine("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (ex, true);");
+			sw.WriteLine("\t\t\t\tGst.GLib.ExceptionManager.RaiseUnhandledException (ex, true);");
 			
 			sw.WriteLine ("\t\t\t\t// NOTREACHED: above call doesn't return.");
 			sw.WriteLine ("\t\t\t\tthrow ex;");
@@ -228,15 +228,15 @@
 			sw.WriteLine("\t\t{");
 			sw.WriteLine("\t\t\t{0} args = new {0} ();", EventArgsQualifiedName);
 			sw.WriteLine("\t\t\ttry {");
-			sw.WriteLine("\t\t\t\tGLib.Signal sig = ((GCHandle) gch).Target as GLib.Signal;");
+			sw.WriteLine("\t\t\t\tGst.GLib.Signal sig = ((GCHandle) gch).Target as Gst.GLib.Signal;");
 			sw.WriteLine("\t\t\t\tif (sig == null)");
 			sw.WriteLine("\t\t\t\t\tthrow new Exception(\"Unknown signal GC handle received \" + gch);");
 			sw.WriteLine();
 			string finish = GenArgsInitialization (sw);
 			sw.WriteLine("\t\t\t\t{0} handler = ({0}) sig.Handler;", EventHandlerQualifiedName);
-			sw.WriteLine("\t\t\t\thandler (GLib.Object.GetObject (inst), args);");
+			sw.WriteLine("\t\t\t\thandler (Gst.GLib.Object.GetObject (inst), args);");
 			sw.WriteLine("\t\t\t} catch (Exception e) {");
-			sw.WriteLine("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (e, false);");
+			sw.WriteLine("\t\t\t\tGst.GLib.ExceptionManager.RaiseUnhandledException (e, false);");
 			sw.WriteLine("\t\t\t}");
 			GenArgsCleanup (sw, finish);
 			sw.WriteLine("\t\t}");
@@ -266,13 +266,13 @@
 			sw.WriteLine ();
 			sw.WriteLine ("\tpublic delegate void " + EventHandlerName + "(object o, " + EventArgsName + " args);");
 			sw.WriteLine ();
-			sw.WriteLine ("\tpublic class " + EventArgsName + " : GLib.SignalArgs {");
+			sw.WriteLine ("\tpublic class " + EventArgsName + " : Gst.GLib.SignalArgs {");
 			for (int i = 0; i < parms.Count; i++) {
 				sw.WriteLine ("\t\tpublic " + parms[i].CSType + " " + parms[i].StudlyName + "{");
 				if (parms[i].PassAs != "out") {
 					sw.WriteLine ("\t\t\tget {");
 					if (SymbolTable.Table.IsInterface (parms [i].CType))
-						sw.WriteLine ("\t\t\t\treturn {0}Adapter.GetObject (Args [{1}] as GLib.Object);", parms [i].CSType, i);
+						sw.WriteLine ("\t\t\t\treturn {0}Adapter.GetObject (Args [{1}] as Gst.GLib.Object);", parms [i].CSType, i);
 					else
 						sw.WriteLine ("\t\t\t\treturn ({0}) Args [{1}];", parms [i].CSType, i);
 					sw.WriteLine ("\t\t\t}");
@@ -302,17 +302,17 @@
 				args_type = ", new " + DelegateName + "(" + CallbackName + ")";
 			}
 
-			sw.WriteLine("\t\t[GLib.Signal("+ CName + ")]");
+			sw.WriteLine("\t\t[Gst.GLib.Signal("+ CName + ")]");
 			sw.Write("\t\tpublic ");
 			if (NeedNew (implementor))
 				sw.Write("new ");
 			sw.WriteLine("event " + EventHandlerQualifiedName + " " + Name + " {");
 			sw.WriteLine("\t\t\tadd {");
-			sw.WriteLine("\t\t\t\tGLib.Signal sig = GLib.Signal.Lookup (" + target + ", " + CName + args_type + ");");
+			sw.WriteLine("\t\t\t\tGst.GLib.Signal sig = Gst.GLib.Signal.Lookup (" + target + ", " + CName + args_type + ");");
 			sw.WriteLine("\t\t\t\tsig.AddDelegate (value);");
 			sw.WriteLine("\t\t\t}");
 			sw.WriteLine("\t\t\tremove {");
-			sw.WriteLine("\t\t\t\tGLib.Signal sig = GLib.Signal.Lookup (" + target + ", " + CName + args_type + ");");
+			sw.WriteLine("\t\t\t\tGst.GLib.Signal sig = Gst.GLib.Signal.Lookup (" + target + ", " + CName + args_type + ");");
 			sw.WriteLine("\t\t\t\tsig.RemoveDelegate (value);");
 			sw.WriteLine("\t\t\t}");
 			sw.WriteLine("\t\t}");
diff -Naur generator-upstream/Signal.cs.orig generator/Signal.cs.orig
diff -Naur generator-upstream/StructBase.cs generator/StructBase.cs
--- generator-upstream/StructBase.cs	2009-08-19 18:13:17.000000000 +0200
+++ generator/StructBase.cs	2009-11-25 08:07:54.000000000 +0100
@@ -92,7 +92,7 @@
 		
 		public string AllocNative (string var)
 		{
-			return "GLib.Marshaller.StructureToPtrAlloc (" + var + ")";
+			return "Gst.GLib.Marshaller.StructureToPtrAlloc (" + var + ")";
 		}
 
 		public string ReleaseNative (string var)
diff -Naur generator-upstream/StructGen.cs generator/StructGen.cs
--- generator-upstream/StructGen.cs	2005-08-05 22:34:45.000000000 +0200
+++ generator/StructGen.cs	2009-11-25 08:07:54.000000000 +0100
@@ -36,8 +36,8 @@
 			StreamWriter sw = gen_info.Writer = gen_info.OpenStream (Name);
 			base.Generate (gen_info);
 			if (GetMethod ("GetType") == null && GetMethod ("GetGType") == null) {
-				sw.WriteLine ("\t\tprivate static GLib.GType GType {");
-				sw.WriteLine ("\t\t\tget { return GLib.GType.Pointer; }");
+				sw.WriteLine ("\t\tprivate static Gst.GLib.GType GType {");
+				sw.WriteLine ("\t\t\tget { return Gst.GLib.GType.Pointer; }");
 				sw.WriteLine ("\t\t}");
 			}
 			sw.WriteLine ("#endregion");
diff -Naur generator-upstream/SymbolTable.cs generator/SymbolTable.cs
--- generator-upstream/SymbolTable.cs	2009-08-13 16:46:33.000000000 +0200
+++ generator/SymbolTable.cs	2009-11-25 08:07:54.000000000 +0100
@@ -108,23 +108,24 @@
 			AddType (new ConstStringGen ("const-xmlChar"));
 			AddType (new ConstStringGen ("const-char"));
 			AddType (new ConstFilenameGen ("const-gfilename"));
-			AddType (new MarshalGen ("gfilename", "string", "IntPtr", "GLib.Marshaller.StringToFilenamePtr({0})", "GLib.Marshaller.FilenamePtrToStringGFree({0})"));
-			AddType (new MarshalGen ("gchar", "string", "IntPtr", "GLib.Marshaller.StringToPtrGStrdup({0})", "GLib.Marshaller.PtrToStringGFree({0})"));
-			AddType (new MarshalGen ("char", "string", "IntPtr", "GLib.Marshaller.StringToPtrGStrdup({0})", "GLib.Marshaller.PtrToStringGFree({0})"));
+			AddType (new MarshalGen ("gfilename", "string", "IntPtr", "Gst.GLib.Marshaller.StringToFilenamePtr({0})", "Gst.GLib.Marshaller.FilenamePtrToStringGFree({0})"));
+			AddType (new MarshalGen ("gchar", "string", "IntPtr", "Gst.GLib.Marshaller.StringToPtrGStrdup({0})", "Gst.GLib.Marshaller.PtrToStringGFree({0})"));
+			AddType (new MarshalGen ("char", "string", "IntPtr", "Gst.GLib.Marshaller.StringToPtrGStrdup({0})", "Gst.GLib.Marshaller.PtrToStringGFree({0})"));
 			AddType (new SimpleGen ("GStrv", "string[]", "null"));
 
 			// manually wrapped types requiring more complex marshaling
-			AddType (new ManualGen ("GInitiallyUnowned", "GLib.InitiallyUnowned", "GLib.Object.GetObject ({0})"));
-			AddType (new ManualGen ("GObject", "GLib.Object", "GLib.Object.GetObject ({0})"));
-			AddType (new ManualGen ("GList", "GLib.List"));
-			AddType (new ManualGen ("GPtrArray", "GLib.PtrArray"));
-			AddType (new ManualGen ("GSList", "GLib.SList"));
-			AddType (new MarshalGen ("gunichar", "char", "uint", "GLib.Marshaller.CharToGUnichar ({0})", "GLib.Marshaller.GUnicharToChar ({0})"));
-			AddType (new MarshalGen ("time_t", "System.DateTime", "IntPtr", "GLib.Marshaller.DateTimeTotime_t ({0})", "GLib.Marshaller.time_tToDateTime ({0})"));
-			AddType (new MarshalGen ("GString", "string", "IntPtr", "new GLib.GString ({0}).Handle", "GLib.GString.PtrToString ({0})"));
-			AddType (new MarshalGen ("GType", "GLib.GType", "IntPtr", "{0}.Val", "new GLib.GType({0})", "GLib.GType.None"));
-			AddType (new ByRefGen ("GValue", "GLib.Value"));
-			AddType (new SimpleGen ("GDestroyNotify", "GLib.DestroyNotify", "null"));
+			AddType (new ManualGen ("GInitiallyUnowned", "Gst.GLib.InitiallyUnowned", "Gst.GLib.Object.GetObject ({0})"));
+			AddType (new ManualGen ("GObject", "Gst.GLib.Object", "Gst.GLib.Object.GetObject ({0})"));
+			AddType (new ManualGen ("GstMiniObject", "Gst.MiniObject", "Gst.MiniObject.GetObject ({0})"));
+			AddType (new ManualGen ("GList", "Gst.GLib.List"));
+			AddType (new ManualGen ("GPtrArray", "Gst.GLib.PtrArray"));
+			AddType (new ManualGen ("GSList", "Gst.GLib.SList"));
+			AddType (new MarshalGen ("gunichar", "char", "uint", "Gst.GLib.Marshaller.CharToGUnichar ({0})", "Gst.GLib.Marshaller.GUnicharToChar ({0})"));
+			AddType (new MarshalGen ("time_t", "System.DateTime", "IntPtr", "Gst.GLib.Marshaller.DateTimeTotime_t ({0})", "Gst.GLib.Marshaller.time_tToDateTime ({0})"));
+			AddType (new MarshalGen ("GString", "string", "IntPtr", "new Gst.GLib.GString ({0}).Handle", "Gst.GLib.GString.PtrToString ({0})"));
+			AddType (new MarshalGen ("GType", "Gst.GLib.GType", "IntPtr", "{0}.Val", "new Gst.GLib.GType({0})", "Gst.GLib.GType.None"));
+			AddType (new ByRefGen ("GValue", "Gst.GLib.Value"));
+			AddType (new SimpleGen ("GDestroyNotify", "Gst.GLib.DestroyNotify", "null"));
 
 			// FIXME: These ought to be handled properly.
 			AddType (new SimpleGen ("GC", "IntPtr", "IntPtr.Zero"));
@@ -136,7 +137,7 @@
 			AddType (new SimpleGen ("GByteArray", "IntPtr", "IntPtr.Zero"));
 			AddType (new SimpleGen ("GData", "IntPtr", "IntPtr.Zero"));
 			AddType (new SimpleGen ("GIOChannel", "IntPtr", "IntPtr.Zero"));
-			AddType (new SimpleGen ("GTypeModule", "GLib.Object", "null"));
+			AddType (new SimpleGen ("GTypeModule", "Gst.GLib.Object", "null"));
 			AddType (new SimpleGen ("GHashTable", "System.IntPtr", "IntPtr.Zero"));
 			AddType (new SimpleGen ("va_list", "IntPtr", "IntPtr.Zero"));
 			AddType (new SimpleGen ("GParamSpec", "IntPtr", "IntPtr.Zero"));
@@ -306,7 +307,8 @@
 			
 		public bool IsObject(string c_type)
 		{
-			if (this[c_type] is ObjectGen)
+			if ((this[c_type] is ObjectGen) ||
+			    (this[c_type] is MiniObjectGen))
 				return true;
 
 			return false;
diff -Naur generator-upstream/VirtualMethod.cs generator/VirtualMethod.cs
--- generator-upstream/VirtualMethod.cs	2009-09-03 21:50:53.000000000 +0200
+++ generator/VirtualMethod.cs	2009-11-25 08:07:54.000000000 +0100
@@ -92,7 +92,7 @@
 				else
 					type = this.container_type.Name;
 
-				sw.WriteLine ("\t\t\t\t{0} __obj = GLib.Object.GetObject (inst, false) as {0};", type);
+				sw.WriteLine ("\t\t\t\t{0} __obj = Gst.GLib.Object.GetObject (inst, false) as {0};", type);
 			}
 
 			sw.Write (call.Setup ("\t\t\t\t"));
@@ -108,7 +108,7 @@
 
 			bool fatal = parms.HasOutParam || !retval.IsVoid;
 			sw.WriteLine ("\t\t\t} catch (Exception e) {");
-			sw.WriteLine ("\t\t\t\tGLib.ExceptionManager.RaiseUnhandledException (e, " + (fatal ? "true" : "false") + ");");
+			sw.WriteLine ("\t\t\t\tGst.GLib.ExceptionManager.RaiseUnhandledException (e, " + (fatal ? "true" : "false") + ");");
 			if (fatal) {
 				sw.WriteLine ("\t\t\t\t// NOTREACHED: above call does not return.");
 				sw.WriteLine ("\t\t\t\tthrow e;");