Message from discussion Gtk+-bindings for Common Lisp?
From: eric dahlman <dahl...@cs.colostate.edu>
Subject: Re: Gtk+-bindings for Common Lisp?
References: <email@example.com> <firstname.lastname@example.org> <email@example.com>
Organization: Colorado State University, Fort Collins, CO 80523
Marco Antoniotti <marc...@copernico.parades.rm.cnr.it> writes:
> I personally have some doubts/misgivings about GTK. Especially when
> you consider running it within a CL implementation.
> The main problem that I see is that GTK seems designed to be a
> "one-application" toolkit system. That is to say, you have no way to
> get in the main event loop (at least not at this time).
> Any comments on this?
I have looked at this and it is a problem. GTK is more than a gui
toolkit, it includes lots of process management stuff and a primitive
reference counting garbage management scheme. The biggest problem
that I saw with interfacing with GTK is the problem of who gets to
call select. Both GTK and lisp (at least ACL) want to have that honor
which can cause lots of problems.
It would be really nice if they would have opened up that part of the
system like is done in xlib, where you can use the standard event
dispatch loop if you want but if you need to you can get at the raw
streams themselves and the the dispatching yourself. However, I don't
know how practical this is since the GTK code itself reenters the the
main dispatch loop recursively in several places. So once you have
written your own the old one just gets called again out side of your
I have toyed with this in the past a couple of times trying to use
Allegro's cbind system to get GTK up and running. But the bugs in
cbind itself have prevented me from making any progress. I just figured
out a work around for one of the bigger bugs this past week so I may
try to get the GTK thing running again this weekend. Not running
nicely, but running.
> Marco Antoniotti ===========================================
> PARADES, Via San Pantaleo 66, I-00186 Rome, ITALY
> tel. +39 - (0)6 - 68 10 03 17, fax. +39 - (0)6 - 68 80 79 26