X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=purple.pyx;h=17411e78233f6ae7c2035846ba327b5f242f1219;hp=e32c96340f7f26882b5c1c3e448b932fab6a2c1a;hb=39c1c26cdc38fe7dc79122c45bba7731b08ed1cd;hpb=25da4997cccd6da3dd63d7c73387f7defee45b1c diff --git a/purple.pyx b/purple.pyx index e32c963..17411e7 100644 --- a/purple.pyx +++ b/purple.pyx @@ -23,6 +23,7 @@ cdef extern from "c_purple.h": glib.guint glib_input_add(glib.gint fd, eventloop.PurpleInputCondition condition, eventloop.PurpleInputFunction function, glib.gpointer data) import ecore +import signal cdef glib.GHashTable *c_ui_info @@ -93,6 +94,12 @@ cdef class Purple: # adds glib iteration inside ecore main loop ecore.timer_add(0.001, self.__glib_iteration_when_idle) + # libpurple's built-in DNS resolution forks processes to perform + # blocking lookups without blocking the main process. It does not + # handle SIGCHLD itself, so if the UI does not you quickly get an army + # of zombie subprocesses marching around. + signal.signal(signal.SIGCHLD, signal.SIG_IGN) + def destroy(self): core.purple_core_quit() @@ -429,6 +436,9 @@ cdef class Purple: iter = iter.next return protocol_list + def call_action(self, i): + __call_action(i) + include "protocol.pyx" #include "plugin.pyx" include "proxy.pyx"