comparison 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
comparison
equal deleted inserted replaced
11079:b2ace57224e2 11080:f54740547c95
22 * along with this program; if not, write to the Free Software 22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24 */ 24 */
25 #include "internal.h" 25 #include "internal.h"
26 26
27 #include "dbus-maybe.h"
27 #include "debug.h" 28 #include "debug.h"
28 #include "signals.h" 29 #include "signals.h"
29 #include "value.h" 30 #include "value.h"
30 31
31 /* must include this to use G_VA_COPY */ 32 /* must include this to use G_VA_COPY */
55 GList *handlers; 56 GList *handlers;
56 size_t handler_count; 57 size_t handler_count;
57 58
58 gulong next_handler_id; 59 gulong next_handler_id;
59 60
61 int dbus_id;
60 } GaimSignalData; 62 } GaimSignalData;
61 63
62 typedef struct 64 typedef struct
63 { 65 {
64 gulong id; 66 gulong id;
164 g_hash_table_insert(instance_data->signals, 166 g_hash_table_insert(instance_data->signals,
165 g_strdup(signal), signal_data); 167 g_strdup(signal), signal_data);
166 168
167 instance_data->next_signal_id++; 169 instance_data->next_signal_id++;
168 instance_data->signal_count++; 170 instance_data->signal_count++;
171
172 #ifdef HAVE_DBUS
173 /* DBus messages are sent directly to the bus so the
174 marshalling function is never called. */
175 signal_data->dbus_id =
176 gaim_dbus_signal_register_gaim(gaim_dbus_object, signal,
177 gaim_dbus_invalid_marshaller,
178 num_values, signal_data->values);
179 #endif /* HAVE_DBUS */
169 180
170 return signal_data->id; 181 return signal_data->id;
171 } 182 }
172 183
173 void 184 void
485 handler_data->data, NULL); 496 handler_data->data, NULL);
486 } 497 }
487 498
488 va_end(tmp); 499 va_end(tmp);
489 } 500 }
501
502 #ifdef HAVE_DBUS
503 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id,
504 signal_data->num_values,
505 signal_data->values, args);
506 #endif /* HAVE_DBUS */
507
490 } 508 }
491 509
492 void * 510 void *
493 gaim_signal_emit_return_1(void *instance, const char *signal, ...) 511 gaim_signal_emit_return_1(void *instance, const char *signal, ...)
494 { 512 {
530 { 548 {
531 gaim_debug(GAIM_DEBUG_ERROR, "signals", 549 gaim_debug(GAIM_DEBUG_ERROR, "signals",
532 "Signal data for %s not found!\n", signal); 550 "Signal data for %s not found!\n", signal);
533 return 0; 551 return 0;
534 } 552 }
553
554 #ifdef HAVE_DBUS
555 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id,
556 signal_data->num_values,
557 signal_data->values, args);
558 #endif /* HAVE_DBUS */
535 559
536 for (l = signal_data->handlers; l != NULL; l = l_next) 560 for (l = signal_data->handlers; l != NULL; l = l_next)
537 { 561 {
538 void *ret_val = NULL; 562 void *ret_val = NULL;
539 563