On Thu, 26 Mar 2009 12:17:17 +0100 Tomasz Jankowski <tomc...@gmail.com> wrote:
> > Hello! > > I'm working on MT application, which perform some tasks in separated > threads. My application also use GTK+ and it should work on Windows, > so I need to deal somehow with running all functions, which change > GUI from one thread. > > I run one thread with GTK's main loop and i want to implement new > source, which will check GAsysnQueue for new elements (passed to it > by other threads) and perform some actions (like updating progress > bars). > > I went to GLib documentation and i stuck there. I'm unable to figure > out how main loop works and how can I correctly implement new source > type. I cannot use idle source, because I want to check my async > queue more often. On the other hand I want to understand how main > loop works in GLib. You can use g_idle_add(), and any custom GSource object you make is going to have to do something very similar. In unix what g_idle_add() does is put a byte in a pipe on which the main loop has a file descriptor poll. In windows I think it uses a windows thread event object. Instead of worker threads placing things in a GAsyncQueue, you can pass them as a data argument when they call g_idle_add(). Or if there is a special reason to do so you can pass the data onto a queue, and your idle function can pop it off again. Chris _______________________________________________ gtk-app-devel-list mailing list gtk-app-devel-list@gnome.org http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list