It came up during the meeting on Tuesday that a glib run loop adapter would be 
helpful for the ongoing vv efforts.  Here is what we were using for msn-pecan 
integration:

/* Enable a glib run loop adapter */
static void glib_runloop_iterator(CFRunLoopObserverRef observer, 
CFRunLoopActivity activity, void *info) {
        //Iterate on the glib loop a single time without blocking
        g_main_context_iteration(/* context */ NULL, /* may_block */ FALSE);
}

void adium_purple_eventloop_enable_glib_runloop(void)
{
        if (!g_thread_supported())
                g_thread_init(NULL);

        CFRunLoopObserverRef observer = 
CFRunLoopObserverCreate(kCFAllocatorDefault, kCFRunLoopBeforeSources,
                                                                                
                                        /* repeats */ true, /* priority */ 0,
                                                                                
                                        glib_runloop_iterator, NULL);
        CFRunLoopAddObserver([[NSRunLoop currentRunLoop] getCFRunLoop], 
observer, kCFRunLoopDefaultMode);
        CFRelease(observer);
}

-Evan

Reply via email to