Re: libtinymailui-gtk model notifications
- From: Philip Van Hoof <spam pvanhoof be>
- To: Sergio Villar Senin <svillar igalia com>
- Cc: tinymail-devel-list gnome org
- Subject: Re: libtinymailui-gtk model notifications
- Date: Wed, 02 Jan 2008 20:27:12 +0100
ah, bad luck.
Perhaps we can refactor the tny_camel_folder_get_headers_async_thread to
group them together and queued add them to the TnyList in the mainloop.
If you are interested in trying that, go ahead :). At that point in time
you have more control over the grouping than in the tny_list_prepend's
implementation of TnyGtkHeaderListModel. So you can probably make it
perform better than the current implementation.
On Wed, 2008-01-02 at 20:21 +0100, Sergio Villar Senin wrote:
> Philip Van Hoof wrote:
> > On Wed, 2008-01-02 at 15:57 +0100, Philip Van Hoof wrote:
> >> On Wed, 2008-01-02 at 12:41 +0100, Sergio Villar Senin wrote:
> >>> Hi
> >>>
> >>> the gtk models issue the notifications using timeouts to put them into
> >>> the main loop, but with the "new" async queue systems, the models
> >>> receive the notifications from the main loop so no need to do that at
> >>> all, or am I wrong?
> >> Contrary in fact. Since everything runs in the account's queue, the
> >> tny_list_prepend call is 'always' called by another thread than the
> >> mainloop's thread. I fear that therefore those timeout tricks are
> >> needed :-\
> >
> > Hmm, no indeed. The "folder_changed" callback already throws it to the
> > mainloop for the TnyFolderMonitor to catch (as folder observer). So it
> > indeed already happens in the mainloop.
>
> Yes, that's what I thought as well, but ... :-) there are some other
> situations where the model is modified by a thread like here
>
> #0 notify_views_add (data=0x832d590) at tny-gtk-header-list-model.c:600
> #1 0xb7e2be7a in tny_gtk_header_list_model_prepend (self=0x832d590,
> item=0x8219ec8)
> at tny-gtk-header-list-model.c:684
> #2 0xb7dbc65d in tny_list_prepend (self=0x832d590, item=0x8219ec8) at
> tny-list.c:89
> #3 0xb7df844d in add_message_with_uid (data=0x838c008,
> user_data=0x8399870) at tny-camel-folder.c:1985
> #4 0xb728d49a in g_ptr_array_foreach () from /usr/lib/libglib-2.0.so.0
> #5 0xb7df8bfb in tny_camel_folder_get_headers_default (self=0x8376328,
> headers=0x832d590, refresh=0,
> err=0x82674cc) at tny-camel-folder.c:2188
> #6 0xb7df88cc in tny_camel_folder_get_headers (self=0x8376328,
> headers=0x832d590, refresh=0,
> err=0x82674cc) at tny-camel-folder.c:2126
> #7 0xb7dc8253 in tny_folder_get_headers (self=0x8376328,
> headers=0x832d590, refresh=0, err=0x82674cc)
> at tny-folder.c:1317
> #8 0xb7df858a in tny_camel_folder_get_headers_async_thread
> (thr_user_data=0x82674c0)
>
> As you can see, this add_mesage_with_uid happens within a thread so we
> can not just simply remove the threads an timeout stuff.
>
> Br
> _______________________________________________
> tinymail-devel-list mailing list
> tinymail-devel-list gnome org
> http://mail.gnome.org/mailman/listinfo/tinymail-devel-list
--
Philip Van Hoof, freelance software developer
home: me at pvanhoof dot be
gnome: pvanhoof at gnome dot org
http://pvanhoof.be/blog
http://codeminded.be
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]