Changeset 9917


Ignore:
Timestamp:
Jan 12, 2010, 2:16:19 PM (12 years ago)
Author:
charles
Message:

(trunk gtk) remove two more minor memory leaks in the GTK+ client found by valgrind

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/util.c

    r9916 r9917  
    663663};
    664664
     665static void
     666gtr_func_data_free( gpointer data )
     667{
     668#if GTK_CHECK_VERSION( 2,10,0 )
     669    g_slice_free( struct gtr_func_data, data );
     670#else
     671    g_free( data );
     672#endif
     673}
     674
     675static struct gtr_func_data *
     676gtr_func_data_new( GSourceFunc function, gpointer data )
     677{
     678#if GTK_CHECK_VERSION( 2,10,0 )
     679    struct gtr_func_data * d = g_slice_new( struct gtr_func_data );
     680#else
     681    struct gtr_func_data * d = g_new( struct gtr_func_data, 1 );
     682#endif
     683    d->function = function;
     684    d->data = data;
     685    return d;
     686}
     687
    665688static gboolean
    666689gtr_thread_func( gpointer data )
    667690{
     691    gboolean more;
    668692    struct gtr_func_data * idle_data = data;
    669     gboolean more;
    670693
    671694    gdk_threads_enter( );
     
    674697
    675698    if( !more )
    676         g_slice_free( struct gtr_func_data, data );
     699        gtr_func_data_free( data );
    677700
    678701    return more;
     
    686709    gdk_threads_add_idle( function, data );
    687710#else
    688     struct gtr_func_data * d = g_slice_new( struct gtr_func_data );
    689     d->function = function;
    690     d->data = data;
    691     g_idle_add( gtr_thread_func, d );
     711    g_idle_add_full( G_PRIORITY_DEFAULT,
     712                     gtr_thread_func,
     713                     gtr_func_data_new( function, data ),
     714                     gtr_func_data_free );
    692715#endif
    693716}
     
    701724    return gdk_threads_add_timeout( seconds*1000, function, data );
    702725#else
    703     struct gtr_func_data * d = g_new( struct gtr_func_data, 1 );
    704     d->function = function;
    705     d->data = data;
    706     return g_timeout_add( seconds*1000, gtr_thread_func, d );
    707 #endif
    708 }
     726    return g_timeout_add_full( G_PRIORITY_DEFAULT,
     727                               seconds * 1000,
     728                               gtr_thread_func,
     729                               gtr_func_data_new( function, data ),
     730                               gtr_func_data_free );
     731#endif
     732}
Note: See TracChangeset for help on using the changeset viewer.