summaryrefslogtreecommitdiffstats
path: root/mono/Test.cs
diff options
context:
space:
mode:
Diffstat (limited to 'mono/Test.cs')
-rw-r--r--mono/Test.cs48
1 files changed, 41 insertions, 7 deletions
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);
}