Changeset 3219

Show
Ignore:
Timestamp:
12/30/07 23:40:28
Author:
pvanhoof
Message:

Performance improvement

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r3215 r3219  
    33        * Performance enhancements 
    44        * Bugfix for the bodystructure parser and per-MIME-part fetching 
     5        * Experimental performance improvement in tny-gtk-header-list-model.c 
    56 
    672007-12-27  Philip Van Hoof <pvanhoof@gnome.org> 
  • trunk/libtinymailui-gtk/tny-gtk-header-list-model.c

    r3161 r3219  
    543543        g_mutex_unlock (priv->ra_lock); 
    544544 
    545         if (priv->timeout_span < 5000) 
    546                 priv->timeout_span += 300; 
     545        if (priv->timeout_span < 1000) 
     546                priv->timeout_span += 100; 
    547547        priv->add_timeout = 0; 
    548548        g_object_unref (data); 
    549549 
    550550        return; 
     551} 
     552 
     553typedef struct  
     554{ 
     555  gint depth; 
     556  gint *indices; 
     557}GtkTreePathInternal; 
     558 
     559static inline GtkTreePath * 
     560gtk_tree_path_new_internal (gint index) 
     561{ 
     562  GtkTreePathInternal *retval = g_slice_new (GtkTreePathInternal); 
     563  retval->depth = 1; 
     564  retval->indices = g_slice_alloc (sizeof(gint)); 
     565  retval->indices[0] = index; 
     566  return (GtkTreePath *) retval; 
     567} 
     568 
     569static inline void 
     570gtk_tree_path_free_internal (GtkTreePath *path_in) 
     571{ 
     572  GtkTreePathInternal *path = (GtkTreePathInternal *) path_in; 
     573  g_slice_free1 (sizeof(gint), path->indices); 
     574  g_slice_free (GtkTreePathInternal, path); 
    551575} 
    552576 
     
    570594        already_registered = priv->registered; 
    571595 
    572         if (priv->items->len - already_registered > 1000)  
     596        if (priv->items->len - already_registered > 3000)  
    573597        { 
    574                 going_tb_registered = already_registered + 1000; 
     598                going_tb_registered = already_registered + 3000; 
    575599                needmore = TRUE; 
    576600        } else 
     
    590614                iter.stamp = priv->stamp; 
    591615                iter.user_data = (gpointer) i; 
    592                 path = gtk_tree_path_new (); 
    593                 gtk_tree_path_append_index (path, i); 
    594                 if (G_LIKELY (path)) 
    595                 { 
    596                         priv->cur_len = i+1; 
    597                         gtk_tree_model_row_inserted ((GtkTreeModel *) data, path, &iter); 
    598                         gtk_tree_path_free (path); 
    599                 } 
     616                path = gtk_tree_path_new_internal (i); 
     617                // gtk_tree_path_append_index (path, i); 
     618                priv->cur_len = i+1; 
     619                gtk_tree_model_row_inserted ((GtkTreeModel *) data, path, &iter); 
     620                gtk_tree_path_free_internal (path); 
    600621        } 
    601622        gdk_threads_leave();