src/signals.c

changeset 11146
c56333373e3c
parent 11080
0578003800d0
child 11171
a25653d60f9c
equal deleted inserted replaced
11145:5320b2d70270 11146:c56333373e3c
55 55
56 GList *handlers; 56 GList *handlers;
57 size_t handler_count; 57 size_t handler_count;
58 58
59 gulong next_handler_id; 59 gulong next_handler_id;
60
61 int dbus_id;
62 } GaimSignalData; 60 } GaimSignalData;
63 61
64 typedef struct 62 typedef struct
65 { 63 {
66 gulong id; 64 gulong id;
166 g_hash_table_insert(instance_data->signals, 164 g_hash_table_insert(instance_data->signals,
167 g_strdup(signal), signal_data); 165 g_strdup(signal), signal_data);
168 166
169 instance_data->next_signal_id++; 167 instance_data->next_signal_id++;
170 instance_data->signal_count++; 168 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 */
180 169
181 return signal_data->id; 170 return signal_data->id;
182 } 171 }
183 172
184 void 173 void
498 487
499 va_end(tmp); 488 va_end(tmp);
500 } 489 }
501 490
502 #ifdef HAVE_DBUS 491 #ifdef HAVE_DBUS
503 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id, 492 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal,
504 signal_data->num_values, 493 signal_data->num_values,
505 signal_data->values, args); 494 signal_data->values, args);
506 #endif /* HAVE_DBUS */ 495 #endif /* HAVE_DBUS */
507 496
508 } 497 }
550 "Signal data for %s not found!\n", signal); 539 "Signal data for %s not found!\n", signal);
551 return 0; 540 return 0;
552 } 541 }
553 542
554 #ifdef HAVE_DBUS 543 #ifdef HAVE_DBUS
555 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal_data->dbus_id, 544 gaim_dbus_signal_emit_gaim(gaim_dbus_object, signal,
556 signal_data->num_values, 545 signal_data->num_values,
557 signal_data->values, args); 546 signal_data->values, args);
558 #endif /* HAVE_DBUS */ 547 #endif /* HAVE_DBUS */
559 548
560 for (l = signal_data->handlers; l != NULL; l = l_next) 549 for (l = signal_data->handlers; l != NULL; l = l_next)

mercurial