Changeset 1749

Show
Ignore:
Timestamp:
03/25/07 15:06:04
Author:
pvanhoof
Message:

Delayer

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymailui-gtk/tny-gtk-header-list-model.c

    r1748 r1749  
    436436        TnyGtkHeaderListModel *me = (TnyGtkHeaderListModel*)self; 
    437437        GtkTreePath *path; 
    438         notify_views_data_t *stuff; 
    439438 
    440439        g_static_rec_mutex_lock (me->iterator_lock); 
    441  
    442         stuff = g_slice_new (notify_views_data_t); 
    443         stuff->self = g_object_ref (G_OBJECT (self)); 
    444         stuff->path = gtk_tree_path_new (); 
    445         gtk_tree_path_append_index (stuff->path, 0); 
    446         stuff->iter.stamp = me->stamp; 
    447440 
    448441        /* Prepend something to the list */ 
    449442        g_object_ref (G_OBJECT (item)); 
    450443        g_ptr_array_add (me->items, item); 
    451         stuff->iter.user_data = (gpointer) (me->items->len - 1); 
    452  
    453         /* Letting the model observers know about this (the GtkTreeViews). The  
    454          * g_timeout_add stuff keeps it possible to launch the prepender in a  
    455          * thread. Else wouldn't the GtkTreeViews like this. */ 
    456  
    457         if (stuff->path) 
    458                 g_timeout_add (0, notify_views_add, stuff); 
    459         else { 
    460                 g_object_unref (G_OBJECT (stuff->self)); 
    461                 g_slice_free (notify_views_data_t, stuff); 
    462         } 
     444 
     445        if (me->delayer == 100) 
     446        { 
     447                notify_views_data_t *stuff; 
     448                stuff = g_slice_new (notify_views_data_t); 
     449                stuff->self = g_object_ref (G_OBJECT (self)); 
     450                stuff->path = gtk_tree_path_new (); 
     451                gtk_tree_path_append_index (stuff->path, 0); 
     452                stuff->iter.stamp = me->stamp; 
     453                stuff->iter.user_data = (gpointer) (me->items->len - 1); 
     454 
     455                /* Letting the model observers know about this (the GtkTreeViews). The  
     456                 * g_timeout_add stuff keeps it possible to launch the prepender in a  
     457                 * thread. Else wouldn't the GtkTreeViews like this. */ 
     458 
     459                if (stuff->path) 
     460                        g_timeout_add (0, notify_views_add, stuff); 
     461                else { 
     462                        g_object_unref (G_OBJECT (stuff->self)); 
     463                        g_slice_free (notify_views_data_t, stuff); 
     464                } 
     465                me->delayer = 0; 
     466        } 
     467 
     468        me->delayer++; 
    463469 
    464470        g_static_rec_mutex_unlock (me->iterator_lock); 
     
    664670        g_static_rec_mutex_init (self->iterator_lock); 
    665671        self->items = g_ptr_array_sized_new (1000); 
     672        self->delayer = 0; 
    666673 
    667674        return; 
  • trunk/libtinymailui-gtk/tny-gtk-header-list-model.h

    r1748 r1749  
    6666        GStaticRecMutex *iterator_lock; 
    6767        TnyFolder *folder; 
    68         gint stamp
     68        gint stamp, delayer
    6969 
    7070        GPtrArray *items;