summaryrefslogtreecommitdiff
path: root/mono
diff options
context:
space:
mode:
authorHavoc Pennington <hp@redhat.com>2003-07-03 01:48:31 +0000
committerHavoc Pennington <hp@redhat.com>2003-07-03 01:48:31 +0000
commit57dfa1e3a72b5269c8a8342895ca17ae95006029 (patch)
tree95d42a86c0e78188383e92b1d59afc0669bb81d2 /mono
parent00c01ed6b45dccc1cc8c980ff44ebd09cc6c1939 (diff)
2003-06-29 Havoc Pennington <hp@pobox.com>
* mono/Test.cs (class Test): fire up a main loop and run it * mono/DBus.cs (DBus): don't g_thread_init since it can only be done once, the app has to do it 2003-06-26 Havoc Pennington <hp@pobox.com> * mono/Connection.cs: set up connection with the glib main loop
Diffstat (limited to 'mono')
-rw-r--r--mono/Connection.cs1
-rw-r--r--mono/DBus.cs9
-rw-r--r--mono/Test.cs48
3 files changed, 42 insertions, 16 deletions
diff --git a/mono/Connection.cs b/mono/Connection.cs
index e22133f..56dcb7a 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 f6f8b00..377af74 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 b64ed9c..e92176f 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);
}