Re: Signals in threads



Hi, I stumbled on this post trying to figure out how to use Glib::Thread and
dispatcher.... how do you make the 'worker thread' aware of the
Glib::Dispatcher?? should the threaded function be a member of the GUI class
or should the dispatcher be passed as an argument to the tread function... I
am new to this type of thing (using threads) so i'm not sure how to approach
it.

I have it working by having the thread function as a member in my GUI class. 
However, I prefer not to do that as I might need to use that function
somewhere else and would rather have it in a different class that could be
used in other dialogs/windows in my app.  any suggestions are much
appreciated.

thanks in advance,
mike


Robert Caryl wrote:
> 
> 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
> 
> 
> _______________________________________________
> gtkmm-list mailing list
> gtkmm-list gnome org
> http://mail.gnome.org/mailman/listinfo/gtkmm-list
> 
> 

-- 
View this message in context: http://www.nabble.com/Signals-in-threads-tf1827625.html#a12112356
Sent from the Gtkmm mailing list archive at Nabble.com.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]