[Adium-devl] [ANN] msn-pecan 0.0.12 released

Evan Schoenberg evan.s at dreskin.net
Fri May 2 21:41:09 UTC 2008


On May 2, 2008, at 5:06 PM, Augie Fackler wrote:

> On May 2, 2008, at 4:04 PM, Evan Schoenberg wrote:
>
>> The basic problem with MSN-pecan is that it does not use libpurple's
>> eventloop functions explicitly. It depends on the glib run loop (via
>> the IO functions) which is present in Pidgin but absent in Adium. The
>> best route to fix this would be to just use sources... Another choice
>> might be to run the glib run loop within Adium.
>
> Is there any technical *reason* it doesn't run inside libpurple's
> event loop?

It makes significant use of the glib IO channels API [1], which  
provide high level access to files, pipes, and sockets.  Unlike the  
lower-level "source read" and "source write" socket watching done  
elsewhere, which are done via the libpurple eventloop API (and which  
therefore lets us send these things to the Cocoa run loop, while  
Pidgin sends them to the glib run loop), the glib-IO-channels stuff  
makes use of the glib run loop directly.

[1] http://library.gnome.org/devel/glib/stable/glib-IO-Channels.html

> I'd just as soon not run another runloop system inside
> Adium (remember the mess that joscar threads turned into)

I'm inclined against running another runloop if it can be avoided, but  
unlike the Cocoa <--> Java connection, glib and Cocoa have run loops  
which work in much the same fashion.  It might be quite simple and  
cheap to let glib run for this.  We'd make a function call to iterate  
the glib run loop one time each time our Cocoa run loop iterates.  An  
early version of the Adium-libpurple connection did this, actually,  
but the problem at that time centered around threading issues which  
are no longer around since we can run the non-blocking libpurple on  
our main thread.

-Evan




More information about the devel mailing list