fix display-type of editor-mixer level-meter
[ardour.git] / gtk2_ardour / utils_videotl.cc
index 93d54449020378f82adb9a6d52b1db4ecb03ac02..504fc3d2eb0100db2bbd8ae78e5863c9b3d8c6f8 100644 (file)
@@ -17,8 +17,6 @@
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
 */
-#ifdef WITH_VIDEOTIMELINE
-
 #include <cstdio>
 #include <string>
 #include <cerrno>
@@ -317,4 +315,70 @@ video_draw_cross (Glib::RefPtr<Gdk::Pixbuf> img)
        }
 }
 
-#endif /* WITH_VIDEOTIMELINE */
+
+extern "C" {
+#include <curl/curl.h>
+
+       struct MemoryStruct {
+               char *data;
+               size_t size;
+       };
+
+       static size_t
+       WriteMemoryCallback(void *ptr, size_t size, size_t nmemb, void *data) {
+               size_t realsize = size * nmemb;
+               struct MemoryStruct *mem = (struct MemoryStruct *)data;
+
+               mem->data = (char *)realloc(mem->data, mem->size + realsize + 1);
+               if (mem->data) {
+                       memcpy(&(mem->data[mem->size]), ptr, realsize);
+                       mem->size += realsize;
+                       mem->data[mem->size] = 0;
+               }
+               return realsize;
+       }
+
+       char *curl_http_get (const char *u, int *status) {
+               CURL *curl;
+               CURLcode res;
+               struct MemoryStruct chunk;
+               long int httpstatus;
+               if (status) *status = 0;
+               //usleep(500000); return NULL; // TEST & DEBUG
+               if (strncmp("http://", u, 7)) return NULL;
+
+               chunk.data=NULL;
+               chunk.size=0;
+
+               curl = curl_easy_init();
+               if(!curl) return NULL;
+               curl_easy_setopt(curl, CURLOPT_URL, u);
+
+               curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk);
+               curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
+               curl_easy_setopt(curl, CURLOPT_USERAGENT, ARDOUR_USER_AGENT);
+               curl_easy_setopt(curl, CURLOPT_TIMEOUT, ARDOUR_CURL_TIMEOUT);
+               curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1);
+#ifdef CURLERRORDEBUG
+               char curlerror[CURL_ERROR_SIZE] = "";
+               curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlerror);
+#endif
+
+               res = curl_easy_perform(curl);
+               curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &httpstatus);
+               curl_easy_cleanup(curl);
+               if (status) *status = httpstatus;
+               if (res) {
+#ifdef CURLERRORDEBUG
+                       printf("curl_http_get() failed: %s\n", curlerror);
+#endif
+                       return NULL;
+               }
+               if (httpstatus != 200) {
+                       free (chunk.data);
+                       chunk.data = NULL;
+               }
+               return (chunk.data);
+       }
+
+} /* end extern "C" */