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