| 196 struct gaim_callback *g; |
196 struct gaim_callback *g; |
| 197 while (c) { |
197 while (c) { |
| 198 g = (struct gaim_callback *)c->data; |
198 g = (struct gaim_callback *)c->data; |
| 199 if (g->handle == plug->handle) { |
199 if (g->handle == plug->handle) { |
| 200 callbacks = g_list_remove(callbacks, c->data); |
200 callbacks = g_list_remove(callbacks, c->data); |
| 201 sprintf(debug_buff, "Removing callback, %d remain\n", |
201 debug_printf("Removing callback, %d remain\n", g_list_length(callbacks)); |
| 202 g_list_length(callbacks)); |
|
| 203 debug_print(debug_buff); |
|
| 204 c = callbacks; |
202 c = callbacks; |
| 205 if (c == NULL) { |
203 if (c == NULL) { |
| 206 break; |
204 break; |
| 207 } |
205 } |
| 208 } else { |
206 } else { |
| 417 } |
415 } |
| 418 |
416 |
| 419 if (!p) |
417 if (!p) |
| 420 return; |
418 return; |
| 421 |
419 |
| 422 sprintf(debug_buff, "Unloading %s\n", g_module_name(p->handle)); |
420 debug_printf("Unloading %s\n", g_module_name(p->handle)); |
| 423 debug_print(debug_buff); |
421 |
| 424 |
422 debug_printf("%d callbacks to search\n", g_list_length(callbacks)); |
| 425 sprintf(debug_buff, "%d callbacks to search\n", g_list_length(callbacks)); |
|
| 426 debug_print(debug_buff); |
|
| 427 |
423 |
| 428 while (c) { |
424 while (c) { |
| 429 g = (struct gaim_callback *)c->data; |
425 g = (struct gaim_callback *)c->data; |
| 430 if (g->handle == p->handle) { |
426 if (g->handle == p->handle) { |
| 431 callbacks = g_list_remove(callbacks, c->data); |
427 callbacks = g_list_remove(callbacks, c->data); |
| 432 g_free(g); |
428 g_free(g); |
| 433 sprintf(debug_buff, "Removing callback, %d remain\n", |
429 debug_printf("Removing callback, %d remain\n", g_list_length(callbacks)); |
| 434 g_list_length(callbacks)); |
|
| 435 debug_print(debug_buff); |
|
| 436 c = callbacks; |
430 c = callbacks; |
| 437 if (c == NULL) { |
431 if (c == NULL) { |
| 438 break; |
432 break; |
| 439 } |
433 } |
| 440 } else { |
434 } else { |
| 505 call->event = which; |
499 call->event = which; |
| 506 call->function = func; |
500 call->function = func; |
| 507 call->data = data; |
501 call->data = data; |
| 508 |
502 |
| 509 callbacks = g_list_append(callbacks, call); |
503 callbacks = g_list_append(callbacks, call); |
| 510 sprintf(debug_buff, "Adding callback %d\n", g_list_length(callbacks)); |
504 debug_printf("Adding callback %d\n", g_list_length(callbacks)); |
| 511 debug_print(debug_buff); |
|
| 512 } |
505 } |
| 513 |
506 |
| 514 void gaim_signal_disconnect(GModule *handle, enum gaim_event which, void *func) { |
507 void gaim_signal_disconnect(GModule *handle, enum gaim_event which, void *func) { |
| 515 GList *c = callbacks; |
508 GList *c = callbacks; |
| 516 struct gaim_callback *g = NULL; |
509 struct gaim_callback *g = NULL; |
| 810 break; |
802 break; |
| 811 default: |
803 default: |
| 812 break; |
804 break; |
| 813 } |
805 } |
| 814 tmp = event_name(event); |
806 tmp = event_name(event); |
| 815 g_snprintf(debug_buff, sizeof debug_buff, "%s: %s\n", tmp, buf); |
807 debug_printf("%s: %s\n", tmp, buf); |
| 816 debug_print(debug_buff); |
|
| 817 return perl_event(tmp, buf); |
808 return perl_event(tmp, buf); |
| 818 #else |
809 #else |
| 819 return 0; |
810 return 0; |
| 820 #endif |
811 #endif |
| 821 } |
812 } |