I'm taking the liberty of forwarding Klaus' reply to preserve it for
posterity, it was most helpful! Hope that's ok with you.

Danke Klaus!

I've almost got it to work. Now I just need to bite through the mutex
thing and I'm good to go as right now I get a segfault and not all
thumbnails are loaded properly.

Impressively, the code is only about 300 lines which says something very
good about gtkmm :)

When I'm done with this I'll try to produce an example on how to
populate an iconview in a separate thread because what I got turns out
to be quite general.

>> What a shame, so I actually need to understand the dispatcher example
>> > fully... was hoping there'd be an easy solution to this  :) 
>> >
>> >   
> 
> There might be an easier way, but my way you could use a class like this:
> 
> 
> class ThreadThumbs : public sigc::trackable
> {
> public:
>   virtual ~ThreadThumbs();
> 
>   void launch();
>   void join();
> 
>   Glib::Dispatcher& signal_new_thumbs_ready(); // connect add thumbs
> function
>  
>   _PointerToPixbuf_ get_next_thumb_(); // use mutex, return 0 when queue
> empty
> 
> private:
>   Glib::Thread*       thread_;
>   Glib::Dispatcher    signal_new_thumbs_ready_;
> 
>   void add_thumb_to_view();
>   void thread_function_create_thumbs(); // create thumbs , add to queue
> (mutex), call signal_new_thumbs_ready_.emit()
>  
>   GLib::Mutex thumbs_mutex_
>   std::queue<_PointerToPixbuf_> thumbs_
> };
> 
> 
> Just add an instance to your widget class and the dispatcher will
> automatically integrate with your GUI thread.
> 
> Regards,
> Klaus
> 




_______________________________________________
gtkmm-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gtkmm-list

Reply via email to