better fix for thumbnails getting mixed up (static int instead of rand), fixes #96

This commit is contained in:
jacob1 2015-01-10 15:45:35 -05:00
parent 65a31bb1d1
commit 1a50217acd
2 changed files with 7 additions and 4 deletions

View File

@ -14,6 +14,8 @@
//Asynchronous Thumbnail render & request processing //Asynchronous Thumbnail render & request processing
unsigned int RequestListener::nextListenerID = 0;
RequestBroker::RequestBroker() RequestBroker::RequestBroker()
{ {
thumbnailQueueRunning = false; thumbnailQueueRunning = false;
@ -265,7 +267,7 @@ bool RequestBroker::CheckRequestListener(ListenerHandle handle)
ListenerHandle RequestBroker::AttachRequestListener(RequestListener * tListener) ListenerHandle RequestBroker::AttachRequestListener(RequestListener * tListener)
{ {
ListenerHandle handle = ListenerHandle(tListener->ListenerRand, tListener); ListenerHandle handle = ListenerHandle(tListener->ListenerID, tListener);
pthread_mutex_lock(&listenersMutex); pthread_mutex_lock(&listenersMutex);
validListeners.push_back(handle); validListeners.push_back(handle);
pthread_mutex_unlock(&listenersMutex); pthread_mutex_unlock(&listenersMutex);
@ -282,7 +284,7 @@ void RequestBroker::DetachRequestListener(RequestListener * tListener)
std::vector<ListenerHandle>::iterator iter = validListeners.begin(); std::vector<ListenerHandle>::iterator iter = validListeners.begin();
while (iter != validListeners.end()) while (iter != validListeners.end())
{ {
if(*iter == ListenerHandle(tListener->ListenerRand, tListener)) if(*iter == ListenerHandle(tListener->ListenerID, tListener))
iter = validListeners.erase(iter); iter = validListeners.erase(iter);
else else
++iter; ++iter;

View File

@ -3,8 +3,9 @@
class RequestListener class RequestListener
{ {
public: public:
int ListenerRand; static unsigned int nextListenerID;
RequestListener() { ListenerRand = rand(); } int ListenerID;
RequestListener() { ListenerID = nextListenerID++; }
virtual ~RequestListener() {} virtual ~RequestListener() {}
virtual void OnResponseReady(void * response, int identifier) {} virtual void OnResponseReady(void * response, int identifier) {}