diff --git a/gstreamer-sharp/Application.cs b/gstreamer-sharp/Application.cs index 4e08ae10bd..89b5d96d53 100644 --- a/gstreamer-sharp/Application.cs +++ b/gstreamer-sharp/Application.cs @@ -48,14 +48,7 @@ namespace Gst { bool result = gst_init_check (ref argc, ref argv_ptr, out error_ptr); if (error_ptr != IntPtr.Zero) { - string message = GError.GetMessage (error_ptr); - - if (message == String.Empty) - message = "Reason unknown"; - - GError.Free (error_ptr); - - throw new ApplicationException (String.Format ("gst_init_check() failed: {0}", message)); + throw new GLib.GException (error_ptr); } else if (!result) { throw new ApplicationException ("gst_init_check() failed: Reason unknown"); } diff --git a/gstreamer-sharp/GError.cs b/gstreamer-sharp/GError.cs index fbc178286e..b4d38135ca 100644 --- a/gstreamer-sharp/GError.cs +++ b/gstreamer-sharp/GError.cs @@ -8,25 +8,50 @@ using System; using System.Runtime.InteropServices; namespace Gst { - internal static class GError { - public static string GetMessage (IntPtr error) { - if (error == IntPtr.Zero) - return String.Empty; - IntPtr message = gstsharp_g_error_get_message (error); - if (message == IntPtr.Zero) - return String.Empty; + [StructLayout (LayoutKind.Sequential) ] + internal struct GError { + uint domain_quark; + int code; + IntPtr message; - return GLib.Marshaller.PtrToStringGFree (message); + public uint Domain { + get { + return domain_quark; + } + set { + domain_quark = value; + } } - public static void Free (IntPtr error) { - if (error != IntPtr.Zero) - g_error_free (error); + public int Code { + get { + return code; + } + set { + code = value; + } } - [DllImport ("gstreamersharpglue-0.10") ] - static extern IntPtr gstsharp_g_error_get_message (IntPtr error); + public string Message { + get { + if (message == IntPtr.Zero) + return null; + return GLib.Marshaller.Utf8PtrToString (message); + } + set { + if (message != IntPtr.Zero) + GLib.Marshaller.Free (message); + message = GLib.Marshaller.StringToPtrGStrdup (value); + } + } + + public void Unset () { + GLib.Marshaller.Free (message); + message = IntPtr.Zero; + code = 0; + domain_quark = 0; + } [DllImport ("glib-2.0.dll") ] static extern void g_error_free (IntPtr error); diff --git a/gstreamer-sharp/MiniObject.custom b/gstreamer-sharp/MiniObject.custom index 94f04cdb25..39725352ed 100644 --- a/gstreamer-sharp/MiniObject.custom +++ b/gstreamer-sharp/MiniObject.custom @@ -20,8 +20,6 @@ public void SetGValue (ref GLib.Value val) { [DllImport ("gstreamersharpglue-0.10.dll") ] private static extern IntPtr gstsharp_g_type_from_instance (IntPtr o); -[DllImport ("gstreamersharpglue-0.10.dll") ] -private static extern IntPtr gstsharp_g_value_type (ref GLib.Value val); [DllImport ("gstreamer-0.10.dll") ] private static extern IntPtr gst_value_dup_mini_object (ref GLib.Value v); [DllImport ("gstreamer-0.10.dll") ] diff --git a/gstreamer-sharp/glue/Makefile.am b/gstreamer-sharp/glue/Makefile.am index 80276a7820..505c5487a9 100644 --- a/gstreamer-sharp/glue/Makefile.am +++ b/gstreamer-sharp/glue/Makefile.am @@ -7,7 +7,6 @@ libgstreamersharpglue_0_10_la_SOURCES = \ message.c \ bin.c \ structure.c \ - gerror.c \ gobject.c nodist_libgstreamersharpglue_0_10_la_SOURCES = generated.c diff --git a/gstreamer-sharp/glue/gerror.c b/gstreamer-sharp/glue/gerror.c deleted file mode 100644 index 1a100aaa0e..0000000000 --- a/gstreamer-sharp/glue/gerror.c +++ /dev/null @@ -1,10 +0,0 @@ -#include - -gchar * -gstsharp_g_error_get_message (GError * error) -{ - if (error->message) - return g_strdup (error->message); - - return NULL; -} diff --git a/gstreamer-sharp/glue/gobject.c b/gstreamer-sharp/glue/gobject.c index db11d1ae58..2c7a2c1d0c 100644 --- a/gstreamer-sharp/glue/gobject.c +++ b/gstreamer-sharp/glue/gobject.c @@ -12,8 +12,3 @@ gstsharp_g_type_from_instance (GTypeInstance * instance) return G_TYPE_FROM_INSTANCE (instance); } -GType -gstsharp_g_value_type (const GValue * val) -{ - return G_VALUE_TYPE (val); -} diff --git a/gstreamer-sharp/glue/message.c b/gstreamer-sharp/glue/message.c index fb69169967..e69de29bb2 100644 --- a/gstreamer-sharp/glue/message.c +++ b/gstreamer-sharp/glue/message.c @@ -1,24 +0,0 @@ -#include -#include -#include - -gchar * -gstsharp_message_parse_error (GstMessage * message) -{ - GError *gerror; - gchar *error; - - gst_message_parse_error (message, &gerror, NULL); - - error = g_strdup (gerror->message); - g_error_free (gerror); - - return error; -} - -GError * -gstsharp_message_error_new () -{ - GQuark domain = g_quark_from_string ("test"); - return g_error_new (domain, 10, "test error"); -}