diff src/signals.c @ 11080:f54740547c95

[gaim-migrate @ 13092] All gaim signals are automatically relayed to dbus. committer: Tailor Script <tailor@pidgin.im>
author Piotr Zielinski <zielaj>
date Sun, 10 Jul 2005 02:29:52 +0000
parents e4459e8ccfb5
children 1c5398ccbeb0
line wrap: on
line diff
--- a/src/signals.c	Sat Jul 09 20:27:57 2005 +0000
+++ b/src/signals.c	Sun Jul 10 02:29:52 2005 +0000
@@ -24,6 +24,7 @@
  */
 #include "internal.h"
 
+#include "dbus-maybe.h"
 #include "debug.h"
 #include "signals.h"
 #include "value.h"
@@ -57,6 +58,7 @@
 
 	gulong next_handler_id;
 
+	int dbus_id;
 } GaimSignalData;
 
 typedef struct
@@ -167,6 +169,15 @@
 	instance_data->next_signal_id++;
 	instance_data->signal_count++;
 
+#ifdef HAVE_DBUS
+	/* DBus messages are sent directly to the bus so the
+	   marshalling function is never called. */
+	signal_data->dbus_id = 
+		gaim_dbus_signal_register_gaim(gaim_dbus_object, signal,
+					       gaim_dbus_invalid_marshaller, 
+					       num_values, signal_data->values);
+#endif	/* HAVE_DBUS */
+
 	return signal_data->id;
 }
 
@@ -487,6 +498,13 @@
 
 		va_end(tmp);
 	}
+
+#ifdef HAVE_DBUS
+	gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id, 
+				   signal_data->num_values, 
+				   signal_data->values, args);
+#endif	/* HAVE_DBUS */
+
 }
 
 void *
@@ -533,6 +551,12 @@
 		return 0;
 	}
 
+#ifdef HAVE_DBUS
+	gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id, 
+				   signal_data->num_values, 
+				   signal_data->values, args);
+#endif	/* HAVE_DBUS */
+
 	for (l = signal_data->handlers; l != NULL; l = l_next)
 	{
 		void *ret_val = NULL;