Changeset 7365


Ignore:
Timestamp:
Dec 13, 2008, 10:52:13 PM (12 years ago)
Author:
charles
Message:

(1.4x libT) #1593: Setting upload to 0 kills all download

Location:
branches/1.4x/libtransmission
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/1.4x/libtransmission/bandwidth.c

    r7328 r7365  
    274274
    275275    /* notify the io buffers that there's more bandwidth available */
    276     if( !b->band[dir].isLimited || ( b->band[dir].bytesLeft > 0 ) )
    277276    {
    278277        int i, n=0;
  • branches/1.4x/libtransmission/session.c

    r7301 r7365  
    280280
    281281    h->bandwidth = tr_bandwidthNew( h, NULL );
    282     tr_bandwidthSetDesiredSpeed( h->bandwidth, TR_UP, uploadLimit );
    283     tr_bandwidthSetDesiredSpeed( h->bandwidth, TR_DOWN, downloadLimit );
    284     tr_bandwidthSetLimited( h->bandwidth, TR_UP, useUploadLimit );
    285     tr_bandwidthSetLimited( h->bandwidth, TR_DOWN, useDownloadLimit );
     282    tr_sessionSetSpeedLimit       ( h, TR_UP,  uploadLimit );
     283    tr_sessionSetSpeedLimitEnabled( h, TR_UP,   useUploadLimit );
     284    tr_sessionSetSpeedLimit       ( h, TR_DOWN, downloadLimit );
     285    tr_sessionSetSpeedLimitEnabled( h, TR_DOWN, useDownloadLimit );
    286286
    287287    /* first %s is the application name
     
    442442***/
    443443
     444static void
     445updateBandwidth( tr_session * session, tr_direction dir )
     446{
     447    const tr_bool zeroCase = session->speedLimit[dir] < 1 && session->isSpeedLimited[dir];
     448
     449    tr_bandwidthSetLimited( session->bandwidth, dir, session->isSpeedLimited[dir] && !zeroCase );
     450
     451    tr_bandwidthSetDesiredSpeed( session->bandwidth, dir, session->speedLimit[dir] );
     452}
     453
    444454void
    445455tr_sessionSetSpeedLimitEnabled( tr_session      * session,
    446456                                tr_direction      dir,
    447                                 int               isLimited )
    448 {
    449     tr_bandwidthSetLimited( session->bandwidth, dir, isLimited );
    450 }
    451 
    452 int
    453 tr_sessionIsSpeedLimitEnabled( const tr_session  * session,
    454                                tr_direction        dir )
    455 {
    456     return tr_bandwidthIsLimited( session->bandwidth, dir );
     457                                tr_bool           isLimited )
     458{
     459    assert( session );
     460    assert( dir==TR_UP || dir==TR_DOWN );
     461
     462    session->isSpeedLimited[dir] = isLimited;
     463    updateBandwidth( session, dir );
    457464}
    458465
     
    462469                         int             desiredSpeed )
    463470{
    464     tr_bandwidthSetDesiredSpeed( session->bandwidth, dir, desiredSpeed );
     471    assert( session );
     472    assert( dir==TR_UP || dir==TR_DOWN );
     473
     474    session->speedLimit[dir] = desiredSpeed;
     475    updateBandwidth( session, dir );
     476}
     477
     478tr_bool
     479tr_sessionIsSpeedLimitEnabled( const tr_session  * session,
     480                               tr_direction        dir )
     481{
     482    assert( session );
     483    assert( dir==TR_UP || dir==TR_DOWN );
     484
     485    return session->isSpeedLimited[dir];
    465486}
    466487
     
    469490                         tr_direction        dir )
    470491{
    471     return tr_bandwidthGetDesiredSpeed( session->bandwidth, dir );
     492    assert( session );
     493    assert( dir==TR_UP || dir==TR_DOWN );
     494
     495    return session->speedLimit[dir];
    472496}
    473497
  • branches/1.4x/libtransmission/session.h

    r7176 r7365  
    6464    tr_bool                      isClosed;
    6565    tr_bool                      useLazyBitfield;
     66
     67    tr_bool                      isSpeedLimited[2];
     68    int                          speedLimit[2];
    6669
    6770    tr_encryption_mode           encryptionMode;
  • branches/1.4x/libtransmission/torrent.c

    r7330 r7365  
    182182}
    183183
    184 int
     184tr_bool
    185185tr_torrentIsPieceTransferAllowed( const tr_torrent  * tor,
    186186                                  tr_direction        direction )
    187187{
    188     int isEnabled = FALSE;
     188    tr_bool isEnabled = FALSE;
    189189
    190190    switch( tr_torrentGetSpeedMode( tor, direction ) )
  • branches/1.4x/libtransmission/torrent.h

    r7267 r7365  
    8787int         tr_torrentAllowsPex( const tr_torrent * );
    8888
    89 int         tr_torrentIsPieceTransferAllowed( const tr_torrent * torrent,
     89tr_bool     tr_torrentIsPieceTransferAllowed( const tr_torrent * torrent,
    9090                                              tr_direction       direction );
    9191
  • branches/1.4x/libtransmission/transmission.h

    r7180 r7365  
    554554tr_direction;
    555555
    556 void       tr_sessionSetSpeedLimitEnabled( tr_session    * session,
    557                                            tr_direction    direction,
    558                                            int             isEnabled );
    559 
    560 double     tr_sessionGetRawSpeed( const tr_session  * session,
    561                                   tr_direction        direection );
    562 
    563 double     tr_sessionGetPieceSpeed( const tr_session  * session,
    564                                     tr_direction        direection );
    565 
    566 int        tr_sessionIsSpeedLimitEnabled( const tr_session  * session,
    567                                           tr_direction       direction );
    568 
    569 void       tr_sessionSetSpeedLimit( tr_session     * session,
    570                                     tr_direction     direction,
    571                                     int              KiB_sec );
    572 
    573 int        tr_sessionGetSpeedLimit( const tr_session  * session,
    574                                     tr_direction        direction );
     556void       tr_sessionSetSpeedLimitEnabled ( tr_session        * session,
     557                                            tr_direction        direction,
     558                                            tr_bool             isEnabled );
     559
     560tr_bool    tr_sessionIsSpeedLimitEnabled  ( const tr_session  * session,
     561                                            tr_direction        direction );
     562
     563void       tr_sessionSetSpeedLimit        ( tr_session        * session,
     564                                            tr_direction        direction,
     565                                            int                 KiB_sec );
     566
     567int        tr_sessionGetSpeedLimit        ( const tr_session  * session,
     568                                            tr_direction        direction );
     569
     570double     tr_sessionGetRawSpeed          ( const tr_session  * session,
     571                                           tr_direction         direction );
     572
     573double     tr_sessionGetPieceSpeed        ( const tr_session  * session,
     574                                            tr_direction        direction );
     575
    575576
    576577void       tr_sessionSetPeerLimit( tr_session  * session,
Note: See TracChangeset for help on using the changeset viewer.