Changeset 909


Ignore:
Timestamp:
Sep 24, 2006, 11:57:10 PM (15 years ago)
Author:
livings124
Message:

Show pieces top-down, and if there are less pieces than are shown, only show that many pieces.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/nat-traversal/PiecesWindowController.m

    r907 r909  
    6565- (void) setTorrent: (Torrent *) torrent
    6666{
    67     BOOL first = YES;
    68    
    6967    if (fTorrent)
    7068    {
     
    7674            [fImageView setImage: fBack];
    7775        }
    78         else
    79             first = NO;
    8076    }
    8177   
     
    8379    {
    8480        fTorrent = [torrent retain];
    85         [self updateView: first];
     81        [self updateView: YES];
    8682    }
    8783}
     
    9288        return;
    9389   
     90    if (first)
     91    {
     92        [fExistingImage release];
     93        fExistingImage = [fBack copy];
     94    }
     95   
    9496    int numPieces = ACROSS * DOWN;
     97    if (numPieces > [fTorrent pieceCount])
     98        numPieces = [fTorrent pieceCount];
     99   
    95100    int8_t * pieces = malloc(numPieces);
    96101    [fTorrent getAvailability: pieces size: numPieces];
     
    101106    BOOL change = NO;
    102107   
    103     [fExistingImage lockFocus];
    104    
    105108    for (i = 0; i < DOWN; i++)
    106109        for (j = 0; j < ACROSS; j++)
     
    109112       
    110113            index++;
     114            if (index >= numPieces)
     115                break;
     116           
    111117            piece = pieces[index];
    112118            if (piece < 0)
    113119            {
    114                 if (fPieces[index] != -1)
     120                if (first || fPieces[index] != -1)
    115121                {
    116122                    fPieces[index] = -1;
     
    120126            else if (piece == 0)
    121127            {
    122                 if (fPieces[index] != 0)
     128                if (first || fPieces[index] != 0)
    123129                {
    124130                    fPieces[index] = 0;
     
    128134            else if (piece == 1)
    129135            {
    130                 if (fPieces[index] != 1)
     136                if (first || fPieces[index] != 1)
    131137                {
    132138                    fPieces[index] = 1;
     
    136142            else if (piece == 2)
    137143            {
    138                 if (fPieces[index] != 2)
     144                if (first || fPieces[index] != 2)
    139145                {
    140146                    fPieces[index] = 2;
     
    144150            else
    145151            {
    146                 if (fPieces[index] != 3)
     152                if (first || fPieces[index] != 3)
    147153                {
    148154                    fPieces[index] = 3;
     
    153159            if (pieceImage)
    154160            {
    155                 point = NSMakePoint(j * (WIDTH + BETWEEN) + BETWEEN, i * (HEIGHT + BETWEEN) + BETWEEN);
     161                if (!change)
     162                {
     163                    [fExistingImage lockFocus];
     164                    change = YES;
     165                }
     166                point = NSMakePoint(j * (WIDTH + BETWEEN) + BETWEEN, (DOWN - i - 1) * (HEIGHT + BETWEEN) + BETWEEN);
    156167                [pieceImage compositeToPoint: point operation: NSCompositeSourceOver];
    157                
    158                 change = YES;
    159168            }
    160169        }
    161170   
    162     [fExistingImage unlockFocus];
     171    if (change)
     172        [fExistingImage unlockFocus];
    163173   
    164     //reload the image regardless if it wasn't called by the timer
     174    //reload the image if changes were made or the torrent was loaded after it was blank
    165175    if (change || first)
    166176    {
Note: See TracChangeset for help on using the changeset viewer.