Re: Signals in threads
- From: Bob Caryl <bob fis-cal com>
- To: Mike Polan <kanadakid gmail com>
- Cc: gtkmm-list gnome org
- Subject: Re: Signals in threads
- Date: Thu, 22 Jun 2006 08:15:42 -0500
Hey Mike:
First, you need to declare a Gtk::Dispatcher object in your GUI class.
It will be the conduit from your worker threads to your GUI (and usually
primary) thread. Next, in your GUI class you declare a function to
handle the data coming from your worker thread that you will use to
update your GUI, and you use it as a callback slot to connect to your
Gtk::Dispatcher:
Gtk::Dispatcher my_dispatcher;
my_dispatcher.connect(sigc::mem_fun(*myclass,&MyClass::my_callback_slot));
Then, in the worker thread, you just call the dispatcher as a function:
my_dispatcher();
whenever you wish to update your GUI.
In my case, I had also declared in my GUI class a
std::vector<Glib::ustring> object to which my worker thread pushed back
string data that I wanted to add to a Gtk::TextBuffer displayed in a
Gtk::TextView in my GUI class. My callback slot would pop the
Glib::ustrings off this vector one at a time and add them to the
Gtk::TextBuffer whenever it was called by the dispatcher. Therefore, my
worker thread would push back strings to this vector object just prior
to calling the dispatcher.
I hope this helps.
Bob
/*Bob Caryl*
Fiscal Systems,Inc.
256.772.8920 Ext. 108
http://www.fis-cal.com <http://www.fis-cal.com/>/
/This email message may contain privileged or confidential information.
If you are not the intended recipient, you may not disclose, use,
disseminate, distribute, copy or rely on this message or attachment in
any way. If you received this email message in error, please return by
forwarding the message and its attachment to the sender and then delete
the message and its attachment from your computer.
Neither Fiscal Systems, Inc., nor its affiliates, accept any liability
for any errors, omissions, corruption or virus in the contents of this
message or any attachments that arise as a result of e-mail transmission./
Mike Polan wrote:
Hi,
I need to emit certain signals inside a running Glib::Thread in order
to relay some information to the rest of my app. However, from what I
know, I don't believe that it is really safe to emit such signals that
are connected to a Gtk::Window, which in turn will call some GUI
functions, directly from inside threads. Someone mentioned something
about Glib::Dispatcher to me, but I'm not quite sure if that's what's
needed to accomplish my task. In any case, how would I go about doing
something like this?
Thanks in advance.
------------------------------------------------------------------------
_______________________________________________
gtkmm-list mailing list
gtkmm-list gnome org
http://mail.gnome.org/mailman/listinfo/gtkmm-list
begin:vcard
fn:Robert Caryl
n:Caryl;Robert
org:Fiscal Systems, Inc.
adr:;;102 Commerce Circle;Madison;AL;35758;USA
email;internet:bob fis-cal com
title:Senior Software Design Engineer
tel;work:356-772-8920 X108
x-mozilla-html:TRUE
url:http://www.fis-cal.com
version:2.1
end:vcard
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]