diff --git a/src/Misc.cpp b/src/Misc.cpp index 3f7e2ea2c..197e393aa 100644 --- a/src/Misc.cpp +++ b/src/Misc.cpp @@ -7,12 +7,14 @@ #include "Config.h" #include "Misc.h" #include "icondoc.h" -#if defined(WIN) +#ifdef WIN #include #include #include #else #include +#include +#include #endif #ifdef MACOSX #include @@ -655,5 +657,17 @@ int splitsign(const char* str, char * type) return 0; } +void* millisleep(long int t) +{ +#ifdef WIN + Sleep(t); +#else + struct timespec s; + s.tv_sec = t/1000; + s.tv_nsec = (t%1000)*10000000; + nanosleep(&s, NULL); +#endif +} + vector2d v2d_zero = {0,0}; matrix2d m2d_identity = {1,0,0,1}; diff --git a/src/Misc.h b/src/Misc.h index 1c6a9039a..4717d9e68 100644 --- a/src/Misc.h +++ b/src/Misc.h @@ -88,6 +88,8 @@ void membwand(void * dest, void * src, size_t destsize, size_t srcsize); int splitsign(const char* str, char * type = NULL); +void* millisleep(long int t); + // a b // c d diff --git a/src/client/HTTP.cpp b/src/client/HTTP.cpp index 531e9536c..3be85bc1c 100644 --- a/src/client/HTTP.cpp +++ b/src/client/HTTP.cpp @@ -52,6 +52,7 @@ #include "Misc.h" #include "HTTP.h" #include "MD5.h" +#include "Misc.h" #ifdef WIN #define PERROR SOCKET_ERROR @@ -599,7 +600,8 @@ char *http_async_req_stop(void *ctx, int *ret, int *len) char *rxd; if (cx->state != HTS_DONE) - while (!http_async_req_status(ctx)) ; + while (!http_async_req_status(ctx)) + millisleep(1); if (cx->host) { diff --git a/src/client/requestbroker/RequestBroker.cpp b/src/client/requestbroker/RequestBroker.cpp index 1516b2686..7f20c907e 100644 --- a/src/client/requestbroker/RequestBroker.cpp +++ b/src/client/requestbroker/RequestBroker.cpp @@ -7,6 +7,7 @@ #include "RequestListener.h" #include "ThumbRenderRequest.h" #include "ImageRequest.h" +#include "Misc.h" #include "client/Client.h" #include "client/GameSave.h" #include "graphics/Graphics.h" @@ -233,6 +234,7 @@ void RequestBroker::thumbnailQueueProcessTH() } } pthread_mutex_unlock(&requestQueueMutex); + millisleep(1); } pthread_mutex_lock(&runningMutex); thumbnailQueueRunning = false;