Mercurial > pidgin.yaz
comparison src/aim.c @ 2125:af59d854de29
[gaim-migrate @ 2135]
bmiller's patch to unload plugins on exit signals
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Mon, 06 Aug 2001 18:12:36 +0000 |
parents | 388b2d23442a |
children | 50c7a704ee56 |
comparison
equal
deleted
inserted
replaced
2124:a1922ad52304 | 2125:af59d854de29 |
---|---|
85 applet_buddy_show = FALSE; | 85 applet_buddy_show = FALSE; |
86 if (mainwindow) | 86 if (mainwindow) |
87 gtk_widget_hide(mainwindow); | 87 gtk_widget_hide(mainwindow); |
88 #else | 88 #else |
89 #ifdef GAIM_PLUGINS | 89 #ifdef GAIM_PLUGINS |
90 GList *c; | |
91 struct gaim_plugin *p; | |
92 void (*gaim_plugin_remove)(); | |
93 | |
94 /* first we tell those who have requested it we're quitting */ | 90 /* first we tell those who have requested it we're quitting */ |
95 plugin_event(event_quit, 0, 0, 0, 0); | 91 plugin_event(event_quit, 0, 0, 0, 0); |
96 | 92 |
97 /* then we remove everyone in a mass suicide */ | 93 /* then we remove everyone in a mass suicide */ |
98 c = plugins; | 94 remove_all_plugins(); |
99 while (c) { | |
100 p = (struct gaim_plugin *)c->data; | |
101 if (g_module_symbol(p->handle, "gaim_plugin_remove", (gpointer *)&gaim_plugin_remove)) | |
102 (*gaim_plugin_remove)(); | |
103 /* we don't need to worry about removing callbacks since | |
104 * there won't be any more chance to call them back :) */ | |
105 g_free(p); | |
106 c = c->next; | |
107 } | |
108 #endif /* GAIM_PLUGINS */ | 95 #endif /* GAIM_PLUGINS */ |
109 #ifdef USE_PERL | 96 #ifdef USE_PERL |
110 perl_end(); | 97 perl_end(); |
111 #endif | 98 #endif |
112 | 99 |
404 "assistance, please IM either EWarmenhoven or RobFlynn and\n" | 391 "assistance, please IM either EWarmenhoven or RobFlynn and\n" |
405 "they can help you.\n"); | 392 "they can help you.\n"); |
406 abort(); | 393 abort(); |
407 break; | 394 break; |
408 default: | 395 default: |
396 debug_printf("caught signal %d\n", sig); | |
409 gtkspell_stop(); | 397 gtkspell_stop(); |
410 debug_printf("caught signal %d\n", sig); | 398 remove_all_plugins(); |
411 if (gtk_main_level()) | 399 if (gtk_main_level()) |
412 gtk_main_quit(); | 400 gtk_main_quit(); |
413 exit(0); | 401 exit(0); |
414 } | 402 } |
415 } | 403 } |