From 51f1126a6dec50a81a1421c38dda69bd0e02789d Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Mon, 9 Jun 2008 23:11:15 +0000 Subject: [PATCH] (libT) make tr_torrentAvailability() a lot faster in the case where the torrent is complete, and a little faster in the genral case too. --- libtransmission/peer-mgr.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libtransmission/peer-mgr.c b/libtransmission/peer-mgr.c index 71853ac85..8f146b4d2 100644 --- a/libtransmission/peer-mgr.c +++ b/libtransmission/peer-mgr.c @@ -1286,12 +1286,17 @@ tr_peerMgrTorrentAvailability( const tr_peerMgr * manager, const Torrent * t; const tr_torrent * tor; float interval; + int isComplete; + int peerCount; + const tr_peer ** peers; managerLock( (tr_peerMgr*)manager ); t = getExistingTorrent( (tr_peerMgr*)manager, torrentHash ); tor = t->tor; interval = tor->info.pieceCount / (float)tabCount; + isComplete = tor && ( tr_cpGetStatus ( tor->completion ) == TR_CP_COMPLETE ); + peers = (const tr_peer **) tr_ptrArrayPeek( t->peers, &peerCount ); memset( tab, 0, tabCount ); @@ -1301,11 +1306,10 @@ tr_peerMgrTorrentAvailability( const tr_peerMgr * manager, if( tor == NULL ) tab[i] = 0; - else if( tr_cpPieceIsComplete( tor->completion, piece ) ) + else if( isComplete || tr_cpPieceIsComplete( tor->completion, piece ) ) tab[i] = -1; - else { - int j, peerCount; - const tr_peer ** peers = (const tr_peer **) tr_ptrArrayPeek( t->peers, &peerCount ); + else if( peerCount ) { + int j; for( j=0; jhave, i ) ) ++tab[i];