X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Faddon%2Fdownloader.cpp;h=905dd2b5d4d0f54184d1c871a8789b95935dcabb;hb=HEAD;hp=80a55757c308f07aa2ced88a92af805f6808d4ba;hpb=2b7cf1bf8c85a4df1d2a02ddcad8723b40f8efff;p=supertux.git diff --git a/src/addon/downloader.cpp b/src/addon/downloader.cpp index 80a55757c..905dd2b5d 100644 --- a/src/addon/downloader.cpp +++ b/src/addon/downloader.cpp @@ -18,6 +18,7 @@ #include "addon/downloader.hpp" #include +#include #include #include #include @@ -81,8 +82,8 @@ public: m_id(id), m_url(url), m_handle(), - m_error_buffer({'\0'}), - m_status(new TransferStatus(downloader, id)), + m_error_buffer({{'\0'}}), + m_status(new TransferStatus(m_downloader, id)), m_fout(PHYSFS_openWrite(outfile.c_str()), PHYSFS_close) { if (!m_fout) @@ -111,8 +112,8 @@ public: curl_easy_setopt(m_handle, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(m_handle, CURLOPT_NOPROGRESS, 0); - curl_easy_setopt(m_handle, CURLOPT_XFERINFODATA, this); - curl_easy_setopt(m_handle, CURLOPT_XFERINFOFUNCTION, &Transfer::on_progress_wrap); + curl_easy_setopt(m_handle, CURLOPT_PROGRESSDATA, this); + curl_easy_setopt(m_handle, CURLOPT_PROGRESSFUNCTION, &Transfer::on_progress_wrap); } } @@ -152,14 +153,16 @@ public: return size * nmemb; } - void on_progress(curl_off_t dltotal, curl_off_t dlnow, - curl_off_t ultotal, curl_off_t ulnow) + int on_progress(double dltotal, double dlnow, + double ultotal, double ulnow) { - m_status->dltotal = dltotal; - m_status->dlnow = dlnow; + m_status->dltotal = static_cast(dltotal); + m_status->dlnow = static_cast(dlnow); - m_status->ultotal = ultotal; - m_status->ulnow = ulnow; + m_status->ultotal = static_cast(ultotal); + m_status->ulnow = static_cast(ulnow); + + return 0; } private: @@ -168,9 +171,9 @@ private: return static_cast(userdata)->on_data(ptr, size, nmemb); } - static void on_progress_wrap(void* userdata, - curl_off_t dltotal, curl_off_t dlnow, - curl_off_t ultotal, curl_off_t ulnow) + static int on_progress_wrap(void* userdata, + double dltotal, double dlnow, + double ultotal, double ulnow) { return static_cast(userdata)->on_progress(dltotal, dlnow, ultotal, ulnow); } @@ -245,6 +248,7 @@ Downloader::download(const std::string& url) void Downloader::download(const std::string& url, const std::string& filename) { + log_info << "download: " << url << " to " << filename << std::endl; std::unique_ptr fout(PHYSFS_openWrite(filename.c_str()), PHYSFS_close); download(url, my_curl_physfs_write, fout.get()); @@ -360,6 +364,7 @@ Downloader::update() TransferStatusPtr Downloader::request_download(const std::string& url, const std::string& outfile) { + log_info << "request_download: " << url << std::endl; std::unique_ptr transfer(new Transfer(*this, m_next_transfer_id++, url, outfile)); curl_multi_add_handle(m_multi_handle, transfer->get_curl_handle()); m_transfers.push_back(std::move(transfer));