diff --git a/src/client/requestbroker/RequestBroker.cpp b/src/client/requestbroker/RequestBroker.cpp index 98dac6e46..ee0b4d40a 100644 --- a/src/client/requestbroker/RequestBroker.cpp +++ b/src/client/requestbroker/RequestBroker.cpp @@ -14,6 +14,8 @@ //Asynchronous Thumbnail render & request processing +unsigned int RequestListener::nextListenerID = 0; + RequestBroker::RequestBroker() { thumbnailQueueRunning = false; @@ -265,7 +267,7 @@ bool RequestBroker::CheckRequestListener(ListenerHandle handle) ListenerHandle RequestBroker::AttachRequestListener(RequestListener * tListener) { - ListenerHandle handle = ListenerHandle(tListener->ListenerRand, tListener); + ListenerHandle handle = ListenerHandle(tListener->ListenerID, tListener); pthread_mutex_lock(&listenersMutex); validListeners.push_back(handle); pthread_mutex_unlock(&listenersMutex); @@ -282,7 +284,7 @@ void RequestBroker::DetachRequestListener(RequestListener * tListener) std::vector::iterator iter = validListeners.begin(); while (iter != validListeners.end()) { - if(*iter == ListenerHandle(tListener->ListenerRand, tListener)) + if(*iter == ListenerHandle(tListener->ListenerID, tListener)) iter = validListeners.erase(iter); else ++iter; diff --git a/src/client/requestbroker/RequestListener.h b/src/client/requestbroker/RequestListener.h index b67805c7c..2ded44e8d 100644 --- a/src/client/requestbroker/RequestListener.h +++ b/src/client/requestbroker/RequestListener.h @@ -3,8 +3,9 @@ class RequestListener { public: - int ListenerRand; - RequestListener() { ListenerRand = rand(); } + static unsigned int nextListenerID; + int ListenerID; + RequestListener() { ListenerID = nextListenerID++; } virtual ~RequestListener() {} virtual void OnResponseReady(void * response, int identifier) {}