Changeset 4244


Ignore:
Timestamp:
Dec 20, 2007, 3:16:14 PM (14 years ago)
Author:
charles
Message:

(gtk) fix three memory leaks + minor cleanup in the torrent renderer

Location:
trunk/gtk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gtk/actions.c

    r4240 r4244  
    275275  gtk_ui_manager_insert_action_group( ui_manager, action_group, 0 );
    276276  g_object_unref (G_OBJECT(action_group));
     277  g_free( match );
    277278}
    278279
  • trunk/gtk/torrent-cell-renderer.c

    r4238 r4244  
    6868getProgressString( const tr_info * info, const tr_stat * torStat )
    6969{
    70     const int allDownloaded = torStat->leftUntilDone == 0;
     70    const int isDone = torStat->leftUntilDone == 0;
    7171    const uint64_t haveTotal = torStat->haveUnchecked + torStat->haveValid;
    7272    const int isSeed = torStat->haveValid >= info->totalSize;
     
    7474    char * str;
    7575
    76     if( !allDownloaded )
     76    if( !isDone )
    7777        str = g_strdup_printf(
    7878                  _("%s of %s (%.2f%%)"),
     
    101101getShortTransferString( const tr_stat * torStat, char * buf, size_t buflen )
    102102{
    103     char upStr[32], downStr[32];
     103    char downStr[32], upStr[32];
     104    const int haveDown = ( torStat->rateDownload * 1024 ) > 1.0;
    104105    const int haveUp = ( torStat->rateUpload * 1024 ) > 1.0;
    105     const int haveDown = ( torStat->rateDownload * 1024 ) > 1.0;
    106106
    107107    if( haveDown )
     
    146146            char buf[128];
    147147            if( torStat->status != TR_STATUS_DOWNLOAD )
    148                 g_string_append_printf( gstr, _("Ratio: %.1f, " ), torStat->ratio*100.0 );
    149             g_string_append( gstr, getShortTransferString( torStat, buf, sizeof( buf ) ) );
     148                g_string_append_printf( gstr, _("Ratio: %.1f, " ),
     149                                        torStat->ratio*100.0 );
     150            getShortTransferString( torStat, buf, sizeof( buf ) );
     151            g_string_append( gstr, buf );
    150152            break;
    151153        }
     
    161163getStatusString( const tr_stat * torStat )
    162164{
    163     char * pch;
    164165    const int isActive = torStat->status != TR_STATUS_STOPPED;
    165166    const int isChecking = torStat->status == TR_STATUS_CHECK
     
    176177        case TR_STATUS_STOPPED:
    177178        case TR_STATUS_CHECK_WAIT:
    178         case TR_STATUS_CHECK:
    179             pch = getShortStatusString( torStat );
     179        case TR_STATUS_CHECK: {
     180            char * pch = getShortStatusString( torStat );
    180181            g_string_assign( gstr, pch );
    181182            g_free( pch );
    182183            break;
     184        }
    183185
    184186        case TR_STATUS_DOWNLOAD:
     
    377379    const double unverified = torStat->haveUnchecked / (double)info->totalSize;
    378380    const double unavailable = ( torStat->desiredSize
    379                                - torStat->desiredAvailable ) / (double)info->totalSize;
     381                       - torStat->desiredAvailable ) / (double)info->totalSize;
    380382    const double unwanted = ( info->totalSize
    381383                            - torStat->desiredSize ) / (double)info->totalSize;
     
    443445    if(( w = unavailableWidth )) {
    444446        const GdkColor * colors = isActive && self->priv->show_unavailable
    445             ? self->priv->color_unavailable
    446             : self->priv->color_missing;
     447                                ? self->priv->color_unavailable
     448                                : self->priv->color_missing;
    447449        rect.x = x;
    448450        rect.width = w;
     
    490492        const char * name = info->name;
    491493        const tr_stat * torStat = tr_torrentStat( (tr_torrent*)tor );
    492         char * progressString = getProgressString( info, torStat );
    493         char * statusString = getStatusString( torStat );
    494         char * str;
    495494        GdkRectangle my_bg;
    496495        GdkRectangle my_cell;
     
    510509        if( !p->minimal )
    511510        {
    512             str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
    513                                            name, progressString );
     511            char * progressString = getProgressString( info, torStat );
     512            char * str = g_markup_printf_escaped( "<b>%s</b>\n<small>%s</small>",
     513                                                  name, progressString );
    514514            g_object_set( p->text_renderer, "markup", str,
    515515                                            "ellipsize", PANGO_ELLIPSIZE_NONE,
     
    528528            my_cell.y += h;
    529529            my_expose.y += h;
     530
     531            g_free( str );
     532            g_free( progressString );
    530533        }
    531534        else
    532535        {
     536            char * statusStr = getShortStatusString( torStat );
     537            char * str = g_markup_printf_escaped( "<small>%s</small>", statusStr );
    533538            int w1, w2, h1, h2, tmp_h;
    534             char * shortStatus = getShortStatusString( torStat );
    535539            GdkRectangle tmp_bg, tmp_cell, tmp_expose;
    536540
     
    543547
    544548            /* get the dimensions for the short status string */
    545             str = g_markup_printf_escaped( "<small>%s</small>", shortStatus );
    546549            g_object_set( p->text_renderer, "markup", str,
    547550                                            "ellipsize", PANGO_ELLIPSIZE_NONE,
     
    559562            tmp_expose = tmp_cell = tmp_bg;
    560563            g_object_set( p->text_renderer, "markup", str,
    561                                             "ellipsize", PANGO_ELLIPSIZE_NONE,
     564                                            "ellipsize", PANGO_ELLIPSIZE_END,
    562565                                            NULL );
    563566            gtk_cell_renderer_render( p->text_renderer,
     
    576579                                      &tmp_bg, &tmp_cell, &tmp_expose, flags );
    577580
    578             g_free( str );
    579             g_free( shortStatus );
    580 
    581581            my_bg.y = tmp_bg.y + tmp_bg.height;
    582582            my_cell.y = tmp_cell.y + tmp_cell.height;
    583583            my_expose.y += tmp_expose.y + tmp_cell.height;
     584
     585            g_free( str );
     586            g_free( statusStr );
    584587        }
    585588
     
    594597        if( !p->minimal )
    595598        {
    596             str = g_markup_printf_escaped( "<small>%s</small>", statusString );
     599            char * statusString = getStatusString( torStat );
     600            char * str = g_markup_printf_escaped( "<small>%s</small>",
     601                                                  statusString );
    597602            g_object_set( p->text_renderer, "markup", str,
    598603                                            "ellipsize", PANGO_ELLIPSIZE_END,
     
    606611                                      window, widget,
    607612                                      &my_bg, &my_cell, &my_expose, flags );
    608         }
    609 
    610         g_free( statusString );
    611         g_free( progressString );
     613
     614            g_free( str );
     615            g_free( statusString );
     616        }
    612617    }
    613618}
     
    630635    switch( property_id )
    631636    {
    632         case P_TORRENT:     p->tor = g_value_get_pointer( v ); break;
    633         case P_BAR_HEIGHT:  p->bar_height = g_value_get_int( v ); break;
    634         case P_MINIMAL:     p->minimal  = g_value_get_boolean( v ); break;
    635         case P_GRADIENT:    p->gradient = g_value_get_boolean( v ); break;
    636         case P_SHOW_UNAVAILABLE:    p->show_unavailable = g_value_get_boolean( v ); break;
    637637        case P_COLOR_MISSING:       v2c( &p->color_missing[0],     v ); break;
    638638        case P_COLOR_MISSING_2:     v2c( &p->color_missing[1],     v ); break;
     
    649649        case P_COLOR_SEEDING:       v2c( &p->color_seeding[0],     v ); break;
    650650        case P_COLOR_SEEDING_2:     v2c( &p->color_seeding[1],     v ); break;
    651         default: G_OBJECT_WARN_INVALID_PROPERTY_ID( object, property_id, pspec ); break;
     651        case P_TORRENT:     p->tor = g_value_get_pointer( v ); break;
     652        case P_BAR_HEIGHT:  p->bar_height = g_value_get_int( v ); break;
     653        case P_MINIMAL:     p->minimal  = g_value_get_boolean( v ); break;
     654        case P_GRADIENT:    p->gradient = g_value_get_boolean( v ); break;
     655        case P_SHOW_UNAVAILABLE:
     656                            p->show_unavailable = g_value_get_boolean( v ); break;
     657        default:
     658            G_OBJECT_WARN_INVALID_PROPERTY_ID( object, property_id, pspec );
     659            break;
    652660    }
    653661}
     
    675683    switch( property_id )
    676684    {
    677         case P_TORRENT:     g_value_set_pointer( v, p->tor ); break;
    678         case P_BAR_HEIGHT:  g_value_set_int( v, p->bar_height ); break;
    679         case P_MINIMAL:     g_value_set_boolean( v, p->minimal ); break;
    680         case P_GRADIENT:    g_value_set_boolean( v, p->gradient ); break;
    681         case P_SHOW_UNAVAILABLE:    g_value_set_boolean( v, p->show_unavailable ); break;
    682685        case P_COLOR_MISSING:       c2v( v, &p->color_missing[0] ); break;
    683686        case P_COLOR_MISSING_2:     c2v( v, &p->color_missing[1] ); break;
     
    694697        case P_COLOR_SEEDING:       c2v( v, &p->color_seeding[0] ); break;
    695698        case P_COLOR_SEEDING_2:     c2v( v, &p->color_seeding[1] ); break;
     699        case P_TORRENT:     g_value_set_pointer( v, p->tor ); break;
     700        case P_BAR_HEIGHT:  g_value_set_int( v, p->bar_height ); break;
     701        case P_MINIMAL:     g_value_set_boolean( v, p->minimal ); break;
     702        case P_GRADIENT:    g_value_set_boolean( v, p->gradient ); break;
     703        case P_SHOW_UNAVAILABLE:
     704                            g_value_set_boolean( v, p->show_unavailable ); break;
    696705        default:
    697706            G_OBJECT_WARN_INVALID_PROPERTY_ID( object, property_id, pspec );
Note: See TracChangeset for help on using the changeset viewer.