Changeset 440 for trunk


Ignore:
Timestamp:
05/13/08 22:52:50 (12 years ago)
Author:
Eoin
Message:

Fixed a bug in close_all for torrents.

Location:
trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r438 r440  
    2323#define HAL_GENERIC_HOLDER                      20000 
    2424#define HAL_GENERIC_ALV_BEGIN           20010 
     25#define HAL_SPLASHDIALOG_BEGIN          20200 
    2526 
    2627#define HAL_MAIN_LISTVIEW_BEGIN         30000 
     
    4243#include "../src/WTLx/GenericAddListView.hpp" 
    4344#include "../src/AddTorrentDialog.hpp" 
     45#include "../src/SplashDialog.hpp" 
    4446#include "../src/HaliteListViewDlg.hpp" 
    4547#include "../src/NewTorrentDialog.hpp" 
     
    312314END 
    313315 
    314 IDD_CLOSESPLASH DIALOGEX 0,0,191,54 
    315 STYLE DS_MODALFRAME | DS_SETFONT | DS_FIXEDSYS | WS_BORDER | WS_CAPTION | WS_DLGFRAME | WS_POPUP 
    316 EXSTYLE WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST | WS_EX_STATICEDGE 
     316IDD_CLOSESPLASH DIALOGEX 0,0,191,74 
     317STYLE DS_SETFONT | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_THICKFRAME 
     318EXSTYLE WS_EX_TOOLWINDOW | WS_EX_STATICEDGE 
    317319CAPTION "Halite shutting down..." 
    318320FONT 8,"MS Shell Dlg",400,0,1 
    319321BEGIN 
    320322    ICON            IDR_APP_ICON,IDC_STATIC,7,10,21,20,SS_ICON 
    321     LTEXT           "It will take the BitTorrent session a moment to shutdown cleanly after which this message will disappear and the program will close.",IDC_STATIC,35,7,149,27 
    322     AUTOCHECKBOX    "Show this message in future",IDC_SPLASH_MSG,83,35,101,12 
     323    LTEXT           "It will take the BitTorrent session a moment to shutdown cleanly after which this message will disappear and the program will close.",HAL_CSPLASH_MSG,35,7,149,27 
     324    CTEXT           "Stopping Torrents",HAL_CSPLASH_NUM_ACT,6,40,179,14 
     325    AUTOCHECKBOX    "Show this message in future",IDC_SPLASH_MSG,83,60,101,12 
    323326END 
    324327 
     
    613616    HAL_RATE                                      "%1$.2fKB/s down - %2$.2fKB/s up" 
    614617    HAL_DHT_ON                    "%1% DHT node(s)" 
     618    HAL_CSPLASH_ACT_MSG           "%1% active torrent(s)" 
     619    HAL_CSPLASH_SHUTDOWN_MSG      "Shutting down session" 
    615620    HAL_DHT_OFF                   "DHT disabled" 
    616621    HAL_IPFILTER_ON               "Filtering %1% range(s)" 
  • trunk/sln/asio/asio.vcproj

    r380 r440  
    2020                        OutputDirectory="$(SolutionDir)$(ConfigurationName)" 
    2121                        IntermediateDirectory="$(ConfigurationName)" 
    22                         ConfigurationType="1" 
     22                        ConfigurationType="10" 
    2323                        CharacterSet="1" 
    2424                        > 
     
    3030                        /> 
    3131                        <Tool 
    32                                 Name="VCXMLDataGeneratorTool" 
    33                         /> 
    34                         <Tool 
    35                                 Name="VCWebServiceProxyGeneratorTool" 
    36                         /> 
    37                         <Tool 
    3832                                Name="VCMIDLTool" 
    39                         /> 
    40                         <Tool 
    41                                 Name="VCCLCompilerTool" 
    42                                 Optimization="0" 
    43                                 PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" 
    44                                 MinimalRebuild="true" 
    45                                 BasicRuntimeChecks="3" 
    46                                 RuntimeLibrary="3" 
    47                                 UsePrecompiledHeader="0" 
    48                                 WarningLevel="3" 
    49                                 Detect64BitPortabilityProblems="true" 
    50                                 DebugInformationFormat="4" 
    51                         /> 
    52                         <Tool 
    53                                 Name="VCManagedResourceCompilerTool" 
    54                         /> 
    55                         <Tool 
    56                                 Name="VCResourceCompilerTool" 
    57                         /> 
    58                         <Tool 
    59                                 Name="VCPreLinkEventTool" 
    60                         /> 
    61                         <Tool 
    62                                 Name="VCLinkerTool" 
    63                                 LinkIncremental="2" 
    64                                 GenerateDebugInformation="true" 
    65                                 SubSystem="2" 
    66                                 TargetMachine="1" 
    67                         /> 
    68                         <Tool 
    69                                 Name="VCALinkTool" 
    70                         /> 
    71                         <Tool 
    72                                 Name="VCManifestTool" 
    73                         /> 
    74                         <Tool 
    75                                 Name="VCXDCMakeTool" 
    76                         /> 
    77                         <Tool 
    78                                 Name="VCBscMakeTool" 
    79                         /> 
    80                         <Tool 
    81                                 Name="VCFxCopTool" 
    82                         /> 
    83                         <Tool 
    84                                 Name="VCAppVerifierTool" 
    85                         /> 
    86                         <Tool 
    87                                 Name="VCWebDeploymentTool" 
    8833                        /> 
    8934                        <Tool 
     
    9540                        OutputDirectory="$(SolutionDir)$(ConfigurationName)" 
    9641                        IntermediateDirectory="$(ConfigurationName)" 
    97                         ConfigurationType="1" 
     42                        ConfigurationType="10" 
    9843                        CharacterSet="1" 
    9944                        WholeProgramOptimization="1" 
     
    10651                        /> 
    10752                        <Tool 
    108                                 Name="VCXMLDataGeneratorTool" 
    109                         /> 
    110                         <Tool 
    111                                 Name="VCWebServiceProxyGeneratorTool" 
    112                         /> 
    113                         <Tool 
    11453                                Name="VCMIDLTool" 
    115                         /> 
    116                         <Tool 
    117                                 Name="VCCLCompilerTool" 
    118                                 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" 
    119                                 RuntimeLibrary="2" 
    120                                 UsePrecompiledHeader="0" 
    121                                 WarningLevel="3" 
    122                                 Detect64BitPortabilityProblems="true" 
    123                                 DebugInformationFormat="3" 
    124                         /> 
    125                         <Tool 
    126                                 Name="VCManagedResourceCompilerTool" 
    127                         /> 
    128                         <Tool 
    129                                 Name="VCResourceCompilerTool" 
    130                         /> 
    131                         <Tool 
    132                                 Name="VCPreLinkEventTool" 
    133                         /> 
    134                         <Tool 
    135                                 Name="VCLinkerTool" 
    136                                 LinkIncremental="1" 
    137                                 GenerateDebugInformation="true" 
    138                                 SubSystem="2" 
    139                                 OptimizeReferences="2" 
    140                                 EnableCOMDATFolding="2" 
    141                                 TargetMachine="1" 
    142                         /> 
    143                         <Tool 
    144                                 Name="VCALinkTool" 
    145                         /> 
    146                         <Tool 
    147                                 Name="VCManifestTool" 
    148                         /> 
    149                         <Tool 
    150                                 Name="VCXDCMakeTool" 
    151                         /> 
    152                         <Tool 
    153                                 Name="VCBscMakeTool" 
    154                         /> 
    155                         <Tool 
    156                                 Name="VCFxCopTool" 
    157                         /> 
    158                         <Tool 
    159                                 Name="VCAppVerifierTool" 
    160                         /> 
    161                         <Tool 
    162                                 Name="VCWebDeploymentTool" 
    16354                        /> 
    16455                        <Tool 
     
    17061                        OutputDirectory="$(SolutionDir)$(ConfigurationName)" 
    17162                        IntermediateDirectory="$(ConfigurationName)" 
    172                         ConfigurationType="1" 
     63                        ConfigurationType="10" 
    17364                        CharacterSet="1" 
    17465                        WholeProgramOptimization="1" 
     
    18172                        /> 
    18273                        <Tool 
    183                                 Name="VCXMLDataGeneratorTool" 
    184                         /> 
    185                         <Tool 
    186                                 Name="VCWebServiceProxyGeneratorTool" 
    187                         /> 
    188                         <Tool 
    18974                                Name="VCMIDLTool" 
    190                         /> 
    191                         <Tool 
    192                                 Name="VCCLCompilerTool" 
    193                                 PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS" 
    194                                 RuntimeLibrary="2" 
    195                                 UsePrecompiledHeader="0" 
    196                                 WarningLevel="3" 
    197                                 Detect64BitPortabilityProblems="true" 
    198                                 DebugInformationFormat="3" 
    199                         /> 
    200                         <Tool 
    201                                 Name="VCManagedResourceCompilerTool" 
    202                         /> 
    203                         <Tool 
    204                                 Name="VCResourceCompilerTool" 
    205                         /> 
    206                         <Tool 
    207                                 Name="VCPreLinkEventTool" 
    208                         /> 
    209                         <Tool 
    210                                 Name="VCLinkerTool" 
    211                                 LinkIncremental="1" 
    212                                 GenerateDebugInformation="true" 
    213                                 SubSystem="2" 
    214                                 OptimizeReferences="2" 
    215                                 EnableCOMDATFolding="2" 
    216                                 TargetMachine="1" 
    217                         /> 
    218                         <Tool 
    219                                 Name="VCALinkTool" 
    220                         /> 
    221                         <Tool 
    222                                 Name="VCManifestTool" 
    223                         /> 
    224                         <Tool 
    225                                 Name="VCXDCMakeTool" 
    226                         /> 
    227                         <Tool 
    228                                 Name="VCBscMakeTool" 
    229                         /> 
    230                         <Tool 
    231                                 Name="VCFxCopTool" 
    232                         /> 
    233                         <Tool 
    234                                 Name="VCAppVerifierTool" 
    235                         /> 
    236                         <Tool 
    237                                 Name="VCWebDeploymentTool" 
    23875                        /> 
    23976                        <Tool 
  • trunk/src/Halite.cpp

    r397 r440  
    8383        return true; 
    8484} 
     85 
     86void num_active(int) {} 
    8587 
    8688int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) 
     
    178180                else 
    179181                { 
    180                         hal::bittorrent().closeAll(); 
     182                        hal::bittorrent().closeAll(bind(&num_active, _1)); 
    181183                        hal::bittorrent().shutDownSession();             
    182184                } 
  • trunk/src/SplashDialog.hpp

    r356 r440  
    66 
    77#pragma once 
     8 
     9#define HAL_SPLASHDIALOG_BEGIN                  20200 
     10#define HAL_CSPLASH_MSG                                 HAL_SPLASHDIALOG_BEGIN+1 
     11#define HAL_CSPLASH_NUM_ACT                             HAL_SPLASHDIALOG_BEGIN+2 
     12#define HAL_CSPLASH_ACT_MSG                             HAL_SPLASHDIALOG_BEGIN+3 
     13#define HAL_CSPLASH_SHUTDOWN_MSG                HAL_SPLASHDIALOG_BEGIN+4 
     14 
     15//#define IDC_NEWTORRENT_CREATOR_TEXT           HAL_SPLASHDIALOG_BEGIN+3 
     16//#define IDC_NEWTORRENT_CREATOR                        HAL_SPLASHDIALOG_BEGIN+4 
     17 
     18#ifndef RC_INVOKED 
    819 
    920#ifndef HALITE_MINI 
     
    1728class SplashDialog : 
    1829        public CDialogImpl<SplashDialog>, 
    19         public CWinDataExchange<SplashDialog> 
     30        public hal::IniBase<SplashDialog>, 
     31        public CWinDataExchange<SplashDialog>, 
     32        public CDialogResize<SplashDialog> 
    2033{ 
    2134protected: 
    22         typedef HaliteDialog thisClass; 
    23         typedef CDialogImpl<SplashDialog> baseClass; 
     35        typedef SplashDialog thisClass; 
     36        typedef CDialogImpl<thisClass> baseClass; 
     37        typedef hal::IniBase<thisClass> iniClass; 
     38        typedef CDialogResize<thisClass> resizeClass; 
    2439 
    2540public: 
    2641        enum { IDD = IDD_CLOSESPLASH }; 
    2742 
     43        SplashDialog() :         
     44                iniClass("SplashDialog", "dialog"),      
     45                rect_(0,0,0,0) 
     46        { 
     47                Load(); 
     48        } 
     49 
    2850    BEGIN_MSG_MAP_EX(CMainDlg) 
    2951        MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) 
     52 
     53                CHAIN_MSG_MAP(resizeClass) 
    3054    END_MSG_MAP() 
    3155         
     
    3357        DDX_CHECK(IDC_SPLASH_MSG, halite().showMessage) 
    3458    END_DDX_MAP() 
     59 
     60    BEGIN_DLGRESIZE_MAP(thisClass) 
     61                DLGRESIZE_CONTROL(HAL_CSPLASH_MSG, DLSZ_SIZE_X|DLSZ_SIZE_Y) 
     62                DLGRESIZE_CONTROL(HAL_CSPLASH_NUM_ACT, DLSZ_MOVE_Y|DLSZ_SIZE_X) 
     63                DLGRESIZE_CONTROL(IDC_SPLASH_MSG, DLSZ_MOVE_Y|DLSZ_SIZE_X) 
     64        END_DLGRESIZE_MAP() 
     65 
     66        friend class boost::serialization::access; 
     67    template<class Archive> 
     68    void serialize(Archive& ar, const unsigned int version) 
     69        { 
     70                ar & BOOST_SERIALIZATION_NVP(rect_); 
     71        } 
    3572         
    3673        LRESULT SplashDialog::OnInitDialog(...) 
    3774        { 
     75                resizeClass::DlgResize_Init(false, true, WS_CLIPCHILDREN); 
     76 
     77                if (rect_.left != rect_.right) 
     78                        MoveWindow(rect_.left, rect_.top,  
     79                                rect_.right-rect_.left, rect_.bottom-rect_.top, true);   
     80 
    3881                CenterWindow(); 
     82 
    3983                DoDataExchange(false); 
    4084                 
     
    4488        } 
    4589 
     90        void ReportNumActive(int num) 
     91        { 
     92                SetDlgItemText(HAL_CSPLASH_NUM_ACT, (wformat(hal::app().res_wstr(HAL_CSPLASH_ACT_MSG)) % num).str().c_str()); 
     93        } 
     94 
    4695        void SplashThread() 
    4796        { 
    48                 hal::bittorrent().closeAll(); 
     97                hal::bittorrent().closeAll(bind(&SplashDialog::ReportNumActive, this, _1)); 
     98                 
     99                SetDlgItemText(HAL_CSPLASH_NUM_ACT, hal::app().res_wstr(HAL_CSPLASH_SHUTDOWN_MSG).c_str()); 
     100 
    49101                hal::bittorrent().shutDownSession(); 
    50102                 
    51103                DoDataExchange(true); 
     104 
     105                GetWindowRect(rect_); 
     106                Save(); 
    52107                EndDialog(0); 
    53108        } 
     
    60115private: 
    61116        boost::scoped_ptr<thread> thread_ptr; 
     117 
     118        CRect rect_; 
    62119}; 
     120 
     121#endif // RC_INVOKED 
  • trunk/src/halTorrent.cpp

    r438 r440  
    15971597} 
    15981598 
    1599 void bit::closeAll() 
     1599void bit::closeAll(report_num_active fn) 
    16001600{ 
    16011601        try { 
     
    16141614         
    16151615        // Ok this polling loop here is a bit curde, but a blocking wait is actually appropiate. 
    1616         for (bool nonePaused = true; !nonePaused; ) 
    1617         { 
     1616        for (int num_active = -1; num_active != 0; ) 
     1617        { 
     1618                num_active = 0; 
     1619 
    16181620                for (TorrentManager::torrentByName::iterator i=pimpl->theTorrents.begin(), e=pimpl->theTorrents.end();  
    16191621                                i != e; ++i) 
    16201622                { 
    16211623                        // NB. this checks for an internal paused state. 
    1622                         nonePaused &= ((*i).torrent->inSession() ? (*i).torrent->handle().is_paused() : true); 
    1623                 } 
    1624                  
     1624                        if ((*i).torrent->inSession() && !(*i).torrent->handle().is_paused()) 
     1625                                ++num_active; 
     1626                } 
     1627                 
     1628                fn(num_active); 
    16251629                Sleep(200); 
    16261630        } 
  • trunk/src/halTorrent.hpp

    r438 r440  
    409409typedef boost::function<bool (size_t, size_t, size_t)> filterCallback; 
    410410typedef boost::function<bool (size_t, std::wstring)> progress_callback; 
     411typedef boost::function<void (int)> report_num_active; 
    411412 
    412413class bit_impl; 
     
    543544         
    544545        void resumeAll(); 
    545         void closeAll(); 
     546        void closeAll(report_num_active fn); 
    546547         
    547548        bool isTorrent(const std::string& filename); 
Note: See TracChangeset for help on using the changeset viewer.