Re: Calling GUI function from Thread
- From: Robert Pearce <rob bdt-home demon co uk>
- To: Taha Ali <tahaarifali gmail com>, gtkmm-list gnome org
- Subject: Re: Calling GUI function from Thread
- Date: Sat, 8 Sep 2007 23:21:01 +0100
Hi Taha Ali,
On Sun, 9 Sep 2007 you sent me a message saying :
Thanks for the reply.
You should reply always to the list, not to me personally. I'm far from
an expert and even if I was I might miss things. Reply to the list to
get the benefit of a far wider knowledge base.
Actually, the API that I am using wants me to
register a callback function that would report to me the progress of
the function that I have called in my thread. This callback is not able
to see the Glib::Dispatcher variable from my application class.
Is it actually not possible to make it see it? Surely you could use
libsigc++ to pass a method of your application instance as the
call-back?
The
pseudo code is like this:
class Application
{
...................
-------------------
Glib::Dispatcher report_message_signal;
static some_callback_func(arg1, arg2, arg3);
...................
-------------------
...................
-------------------
}
main()
{
----------
----------
Register_API_Callback_func(some_callback_func, .......);
----------
---------
}
on_button_clicked()
{
Glib::Thread::create(thread_function ......);
}
thread_function()
{
---------
---------
API_Function(); //Takes around 10 seconds
----------
----------
}
some_callback_func(Message)
{
//This function is internally called by the API giving info about the
progress that API_Function
//is making and it is from here that I have to set text, in order to
report guiding messages, in the
//label. I know that this is not right but what other options do you
think I have.
}
Thanks and Regards,
Taha
On 9/8/07, Robert Pearce <rob bdt-home demon co uk> wrote:
On Sat, 8 Sep 2007, Taha Ali <tahaarifali gmail com> wrote :
>I am facing problem in calling a gui function from a thread.
Don't do that.
>I am trying to set_text these messages in a label but after
>first normal execution of this thread, the gui hangs on the next
call.
So don't do that.
>When I dont try to set_text any
>thing from this callback function, it works just fine showing me
the
>display (std::cout) on the screen.
So don't do that!
>Need help.
OK, incase you haven't already guessed, the answer is DON'T call GTK
from a thread. It doesn't like it at all.
The function in your thread should use Glib::Dispatcher (or
g_idle_add)
to ask the main (gui) thread to set the text.
--
Rob Pearce http://www.bdt-home.demon.co.uk
The contents of this | Windows NT crashed.
message are purely | I am the Blue Screen of Death.
my opinion. Don't | No one hears your screams.
believe a word. |
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list
--
Rob Pearce http://www.bdt-home.demon.co.uk
The contents of this | Windows NT crashed.
message are purely | I am the Blue Screen of Death.
my opinion. Don't | No one hears your screams.
believe a word. |
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]