Web lists-archives.com

Re: GTK with libdispatch (GCD) on Linux and X11

Message: 1
Date: Mon, 2 May 2016 10:23:08 +0200
From: Hrvoje Niksic <hrvoje.niksic@xxxxxxx>
To: <gtk-list@xxxxxxxxx>
Subject: Re: GTK with libdispatch (GCD) on Linux and X11
Message-ID: <57270E6C.8000009@xxxxxxx>
Content-Type: text/plain; charset="UTF-8"; format=flowed

> On 04/30/2016 03:26 PM, Integratron wrote:
> > I have been investigating using GTK windows and widgets in a program
> > whose main loop is controlled by libdispatch.  The target is X11 on
> > Linux.  GTK is used only for the GUI.  (Other glib event sources are
> > not used in this application.  Networking is done using libdispatch.)
> >
> > I've read through the gtk source and the mainloop and believe that
> > updating the GUI may be as simple as registering the following block
> > callback for the main queue, where the file descriptor watched is the
> > X11 socket.

> How will this handle timeout events? Although your code only uses GTK, 
> the implementation of GTK itself can and does use g_timeout_add and friends.

> Also, you will almost certainly need to consider other sources. Again, 
> even if your code doesn't use them, it is pretty likely that some GTK 
> widgets make use of arbitrary GSources - the file chooser comes to mind.

> Another thing you need to think about are modal dialogs, which run their 
> own inner main loop. Your libdispatch main loop will be unresponsive 
> during a modal dialog run.

Thanks for these insights - these are exactly the types of "gotchas" I was wondering about.

> Could you simply run the GTK main loop in one thread, and the 
> libdispatch main loop in another? A libdispatch callback would then use 
> g_idle_add to invoke GTK code, and GTK callbacks could do similar for 
> libdispatch.

> Hrvoje

This is great feedback!  My application is very simple - it will only have buttons, checkboxes and a graphics area for showing monitoring information from a running application.  There will be no file chooser, or modal dialogs.  (It is easy to imagine these types of widgets creeping in.)

I wonder, however, if there might be a "Simple GTK Subset" that is safe to use in the manner I outlined.  What do you think?  Would it be a useful subset?

The dual thread solution you outlined sounds promising.  I'll investigate and if I learn anything, I'll report it here.

Fundamentally, GTK is based on an event-loop waiting on a poll, and libdispatch unravels the poll into individual callbacks for each event source.  It may turn out to be that these two aren't very compatible.

Thanks again Hrvoje.


Subject: Digest Footer

gtk-list mailing list


End of gtk-list Digest, Vol 145, Issue 2
gtk-list mailing list