Re: Signalling UI from a thread
- From: Niko Demmel <niko demmel gmx de>
- To: SIRISHA MUPPAVARAPU <sirisha muppavarapu veralight com>
- Cc: post gtkmm list <gtkmm-list gnome org>
- Subject: Re: Signalling UI from a thread
- Date: Tue, 03 Jul 2007 13:38:56 +0200
You can use the GLib::Dispatcher class. It is a bit like a
sigc::singal<void>, but works across threads. Your UI Window class
should own a (or more) Dispatcher and connect handler functions. The
worker thread then needs to call Dispatcher::emit() and the handler
functions are executed in the UI thread.
I recommend the Dispatcher example in the docs.
Regards Klaus
On 03/07/2007 00:38, SIRISHA MUPPAVARAPU wrote:
> Hi Klaus
>
> The whole scenario is like this.
>
> The UI is built using Gtkmm. The main method kicks off the application
> by creating the UI forms and by creating the pthread objects which don't
> exit the application. I store the handle (pointers) to the thread
> objects and teh forms globally (using extern), so that the entire
> application can access them to initiate any task.
>
> So, now, there is a thread which runs a task periodically (in a infinite
> for loop). When this thread starts its execution, it needs to inform the
> UI (GtkWindow objects created at the start of the application) that it
> started running task. The UI should then display a msg window that the
> application is running something. When the task is complete, the UI
> should close the msg window
>
> What I realized is, the UI is a bunch of forms created in main method
> and reside globally. On click of buttons, all I do is hide one form and
> show the other. So, how is the communication possible between the
> background thread and the UI GtkWindow objects. For now, I am achieving
> this through global flags and timeout methods. But, thats not a clean
> way of doing it.
>
> Any suggestions? I hope I explained the problem clearly now.
>
> Thanks
> Sirisha
>
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]