diff options
Diffstat (limited to 'mono')
-rw-r--r-- | mono/Connection.cs | 1 | ||||
-rw-r--r-- | mono/DBus.cs | 9 | ||||
-rw-r--r-- | mono/Test.cs | 48 |
3 files changed, 42 insertions, 16 deletions
diff --git a/mono/Connection.cs b/mono/Connection.cs index e22133f7..56dcb7a2 100644 --- a/mono/Connection.cs +++ b/mono/Connection.cs @@ -18,6 +18,7 @@ namespace DBus { error.Free (); throw e; } + dbus_connection_setup_with_g_main (raw, IntPtr.Zero); } // Keep in sync with C diff --git a/mono/DBus.cs b/mono/DBus.cs index f6f8b003..377af742 100644 --- a/mono/DBus.cs +++ b/mono/DBus.cs @@ -15,19 +15,10 @@ namespace DBus { internal const string GThreadname = "libgthread-2.0.so.0"; internal static void Init () { - if (!initialized) { - initialized = true; - g_thread_init (IntPtr.Zero); dbus_gthread_init (); - } } - - private static bool initialized = false; [DllImport (DBus.Internals.DBusGLibname, EntryPoint="dbus_gthread_init")] private extern static void dbus_gthread_init (); - - [DllImport (DBus.Internals.GThreadname, EntryPoint="g_thread_init")] - private extern static void g_thread_init (IntPtr vtable); } } diff --git a/mono/Test.cs b/mono/Test.cs index b64ed9c3..e92176f2 100644 --- a/mono/Test.cs +++ b/mono/Test.cs @@ -1,19 +1,53 @@ using System; +using System.Runtime.InteropServices; class Test { - static void Main() { - DBus.Message m; + static void Main() { + g_thread_init (IntPtr.Zero); + DBus.Connection c; // c = new DBus.Connection ("unix:path=/tmp/foobar"); - c = DBus.Connection.GetBus (DBus.Connection.BusType.Session); - - m = new DBus.Message ("org.freedesktop.Foo", - "org.freedesktop.DBus.Broadcast"); + try { + c = DBus.Connection.GetBus (DBus.Connection.BusType.Session); + } + catch (DBus.Exception e) { + Console.Error.WriteLine ("Failed to open connection: {0}", + e.Message); + return; + } + + DBus.Message m = new DBus.Message ("org.freedesktop.Foo", + "org.freedesktop.DBus.Broadcast"); c.Send (m); - c.Flush (); + c.Flush (); + + IntPtr loop = g_main_loop_new (IntPtr.Zero, false); + + g_main_loop_run (loop); + + g_main_loop_unref (loop); } + + internal const string GLibname = "libglib-2.0.so.0"; + internal const string GThreadname = "libgthread-2.0.so.0"; + + [DllImport (GLibname, EntryPoint="g_main_loop_new")] + private extern static IntPtr g_main_loop_new (IntPtr context, + bool is_running); + + [DllImport (GLibname, EntryPoint="g_main_loop_unref")] + private extern static void g_main_loop_unref (IntPtr loop); + + [DllImport (GLibname, EntryPoint="g_main_loop_run")] + private extern static void g_main_loop_run (IntPtr loop); + + [DllImport (GLibname, EntryPoint="g_main_loop_quit")] + private extern static void g_main_loop_quit (IntPtr loop); + + [DllImport (GThreadname, EntryPoint="g_thread_init")] + private extern static void g_thread_init (IntPtr vtable); } |