New sound effects
[supertux.git] / src / addon / downloader.cpp
index 80a5575..7c51d84 100644 (file)
@@ -18,6 +18,7 @@
 #include "addon/downloader.hpp"
 
 #include <algorithm>
+#include <array>
 #include <assert.h>
 #include <memory>
 #include <physfs.h>
@@ -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<int>(dltotal);
+    m_status->dlnow = static_cast<int>(dlnow);
 
-    m_status->ultotal = ultotal;
-    m_status->ulnow = ulnow;
+    m_status->ultotal = static_cast<int>(ultotal);
+    m_status->ulnow = static_cast<int>(ulnow);
+
+    return 0;
   }
 
 private:
@@ -168,9 +171,9 @@ private:
     return static_cast<Transfer*>(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<Transfer*>(userdata)->on_progress(dltotal, dlnow, ultotal, ulnow);
   }