Changeset 6098


Ignore:
Timestamp:
Jun 9, 2008, 9:20:01 PM (13 years ago)
Author:
livings124
Message:

some maintenance on the pieces view

Location:
trunk/macosx
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/macosx/Controller.m

    r6090 r6098  
    209209                                [fDefaults integerForKey: @"BindPort"],
    210210                                TR_ENCRYPTION_PREFERRED, /* reset in prefs */
    211                                 FALSE, /* reset in prefs */
     211                                NO, /* reset in prefs */
    212212                                -1, /* reset in prefs */
    213                                 FALSE, /* reset in prefs */
     213                                NO, /* reset in prefs */
    214214                                -1, /* reset in prefs */
    215215                                [fDefaults integerForKey: @"PeersTotal"],
     
    217217                                YES,
    218218                                [fDefaults boolForKey: @"Blocklist"],
    219                                 [fDefaults integerForKey: @"PeerSocketTOS"], /* hidden - default should be TR_DEFAULT_PEER_SOCKET_TOS */
     219                                [fDefaults integerForKey: @"PeerSocketTOS"], /* hidden pref - default is TR_DEFAULT_PEER_SOCKET_TOS */
    220220                                [fDefaults boolForKey: @"RPC"],
    221221                                [fDefaults integerForKey: @"RPCPort"],
  • trunk/macosx/InfoWindowController.m

    r6089 r6098  
    738738            title = NSLocalizedString(@"Activity", "Inspector -> title");
    739739           
    740             [fPiecesView updateView: YES];
     740            [fPiecesView resetView];
    741741            break;
    742742        case TAB_TRACKER_TAG:
     
    11431143   
    11441144    [[NSUserDefaults standardUserDefaults] setBool: available forKey: @"PiecesViewShowAvailability"];
    1145     [fPiecesView updateView: YES];
     1145    [fPiecesView resetView];
    11461146}
    11471147
     
    13661366        [fDateCompletedField setObjectValue: [torrent dateCompleted]];
    13671367       
    1368         [fPiecesView updateView: NO];
     1368        [fPiecesView updateView];
    13691369    }
    13701370}
  • trunk/macosx/PiecesView.h

    r4423 r6098  
    4040
    4141- (void) setTorrent: (Torrent *) torrent;
    42 - (void) updateView: (BOOL) first;
     42
     43- (void) resetView;
     44- (void) updateView;
    4345
    4446@end
  • trunk/macosx/PiecesView.m

    r4423 r6098  
    3131@implementation PiecesView
    3232
    33 - (id) initWithCoder: (NSCoder *) decoder
    34 {
    35     if ((self = [super initWithCoder: decoder]))
    36     {
    37         fPieces = malloc(MAX_ACROSS * MAX_ACROSS);
    38     }
    39    
    40     return self;
    41 }
    42 
    4333- (void) awakeFromNib
    4434{
     
    7161- (void) dealloc
    7262{
    73     free(fPieces);
     63    tr_free(fPieces);
    7464   
    7565    [fBack release];
     
    8676    [fBlueColor release];
    8777   
    88     [fTorrent release];
    8978    [super dealloc];
    9079}
     
    9281- (void) setTorrent: (Torrent *) torrent
    9382{
    94     [fTorrent release];
    95    
    96     if (torrent)
     83    //reset the view to blank
     84    NSImage * newBack = [fBack copy];
     85    [self setImage: newBack];
     86    [newBack release];
     87   
     88    tr_free(fPieces);
     89    fPieces = NULL;
     90   
     91    fTorrent = torrent;
     92    if (fTorrent)
    9793    {
    98         fTorrent = [torrent retain];
    99        
    10094        //determine relevant values
    101         fNumPieces = MAX_ACROSS * MAX_ACROSS;
    102         int pieceCount = [fTorrent pieceCount];
    103         if (pieceCount < fNumPieces)
    104         {
    105             fNumPieces = pieceCount;
    106            
    107             fAcross = sqrt(fNumPieces);
    108             if (fAcross * fAcross < fNumPieces)
    109                 fAcross++;
    110         }
    111         else
    112             fAcross = MAX_ACROSS;
     95        fNumPieces = MIN([fTorrent pieceCount], MAX_ACROSS * MAX_ACROSS);
     96        fAcross = ceil(sqrt(fNumPieces));
    11397       
    11498        float width = [self bounds].size.width;
     
    116100        fExtraBorder = (width - ((fWidth + BETWEEN) * fAcross + BETWEEN)) / 2;
    117101       
    118         [self updateView: YES];
     102        [self updateView];
    119103    }
    120104    else
    121     {
    122         fTorrent = nil;
    123        
    124         NSImage * newBack = [fBack copy];
    125         [self setImage: newBack];
    126         [newBack release];
    127        
    128105        [self setNeedsDisplay];
    129     }
    130 }
    131 
    132 - (void) updateView: (BOOL) first
     106}
     107
     108- (void) resetView
     109{
     110    tr_free(fPieces);
     111    fPieces = NULL;
     112   
     113    [self updateView];
     114}
     115
     116- (void) updateView
    133117{
    134118    if (!fTorrent)
    135119        return;
    136120   
    137     if (first)
     121    //determine if first time
     122    BOOL first = NO;
     123    if (!fPieces)
    138124    {
    139         NSImage * newBack = [fBack copy];
    140         [self setImage: newBack];
    141         [newBack release];
    142     }
     125        fPieces = (int8_t *)tr_malloc(fNumPieces * sizeof(int8_t));
     126        first = YES;
     127    }
     128   
    143129    NSImage * image = [self image];
    144130
    145     int8_t * pieces;
    146     float * piecesPercent;
     131    int8_t * pieces = NULL;
     132    float * piecesPercent = NULL;
    147133   
    148134    BOOL showAvailablity = [[NSUserDefaults standardUserDefaults] boolForKey: @"PiecesViewShowAvailability"];
    149135    if (showAvailablity)
    150136    {   
    151         pieces = malloc(fNumPieces * sizeof(int8_t));
     137        pieces = (int8_t *)tr_malloc(fNumPieces * sizeof(int8_t));
    152138        [fTorrent getAvailability: pieces size: fNumPieces];
    153139    }
    154140    else
    155141    {   
    156         piecesPercent = malloc(fNumPieces * sizeof(float));
     142        piecesPercent = (float *)tr_malloc(fNumPieces * sizeof(float));
    157143        [fTorrent getAmountFinished: piecesPercent size: fNumPieces];
    158144    }
     
    161147    float piecePercent;
    162148    NSRect rect = NSMakeRect(0, 0, fWidth, fWidth);
    163     NSColor * pieceColor;
     149   
    164150    BOOL change = NO;
    165151       
     
    174160            }
    175161           
    176             pieceColor = nil;
     162            NSColor * pieceColor = nil;
    177163           
    178164            if (showAvailablity)
     
    294280                }
    295281               
    296                 [pieceColor set];
    297                
    298282                rect.origin = NSMakePoint(j * (fWidth + BETWEEN) + BETWEEN + fExtraBorder,
    299283                                    [image size].width - (i + 1) * (fWidth + BETWEEN) - fExtraBorder);
     284               
     285                [pieceColor set];
    300286                NSRectFill(rect);
    301287            }
     
    308294    }
    309295   
    310     if (showAvailablity)
    311         free(pieces);
    312     else
    313         free(piecesPercent);
     296    tr_free(pieces);
     297    tr_free(piecesPercent);
    314298}
    315299
  • trunk/macosx/TorrentCell.m

    r6024 r6098  
    5555
    5656#define PIECES_TOTAL_PERCENT 0.6
    57 #define MAX_PIECES 324
     57
     58#define MAX_PIECES (18*18)
    5859
    5960@interface TorrentCell (Private)
Note: See TracChangeset for help on using the changeset viewer.