diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-09-30 23:15:09 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-09-30 23:15:09 (GMT) |
| commit | 163fbde8af9ec92e89f3e0cadcb14a7af0b259a0 (patch) | |
| tree | 348824b799c5a63f9834d4c4edc409d148c3311b /src/client/ThumbnailBroker.cpp | |
| parent | 89e96237250be5e305ccfb6cedd9530ccf0e3cf2 (diff) | |
| download | powder-163fbde8af9ec92e89f3e0cadcb14a7af0b259a0.zip powder-163fbde8af9ec92e89f3e0cadcb14a7af0b259a0.tar.gz | |
Fix issue where thumbnails are sometimes the incorrect ones
Diffstat (limited to 'src/client/ThumbnailBroker.cpp')
| -rw-r--r-- | src/client/ThumbnailBroker.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/client/ThumbnailBroker.cpp b/src/client/ThumbnailBroker.cpp index 3fd912e..c81ccc6 100644 --- a/src/client/ThumbnailBroker.cpp +++ b/src/client/ThumbnailBroker.cpp @@ -37,7 +37,7 @@ void ThumbnailBroker::RenderThumbnail(GameSave * gameSave, bool decorations, int pthread_mutex_lock(&thumbnailQueueMutex); bool running = thumbnailQueueRunning; thumbnailQueueRunning = true; - renderRequests.push_back(ThumbRenderRequest(new GameSave(*gameSave), decorations, width, height, tListener)); + renderRequests.push_back(ThumbRenderRequest(new GameSave(*gameSave), decorations, width, height, ListenerHandle(tListener->ListenerRand, tListener))); pthread_mutex_unlock(&thumbnailQueueMutex); if(!running) @@ -55,7 +55,7 @@ void ThumbnailBroker::RetrieveThumbnail(int saveID, int saveDate, int width, int pthread_mutex_lock(&thumbnailQueueMutex); bool running = thumbnailQueueRunning; thumbnailQueueRunning = true; - thumbnailRequests.push_back(ThumbnailRequest(saveID, saveDate, width, height, tListener)); + thumbnailRequests.push_back(ThumbnailRequest(saveID, saveDate, width, height, ListenerHandle(tListener->ListenerRand, tListener))); pthread_mutex_unlock(&thumbnailQueueMutex); if(!running) @@ -80,7 +80,7 @@ void ThumbnailBroker::FlushThumbQueue() { if(CheckThumbnailListener(thumbnailComplete.front().first)) { - thumbnailComplete.front().first->OnThumbnailReady(thumbnailComplete.front().second); + thumbnailComplete.front().first.second->OnThumbnailReady(thumbnailComplete.front().second); } else { @@ -130,7 +130,7 @@ void ThumbnailBroker::thumbnailQueueProcessTH() thumbnail->Resize(req.Width, req.Height); pthread_mutex_lock(&thumbnailQueueMutex); - thumbnailComplete.push_back(std::pair<ThumbnailListener*, Thumbnail*>(req.CompletedListener, thumbnail)); + thumbnailComplete.push_back(std::pair<ListenerHandle, Thumbnail*>(req.CompletedListener, thumbnail)); pthread_mutex_unlock(&thumbnailQueueMutex); } } @@ -173,7 +173,7 @@ void ThumbnailBroker::thumbnailQueueProcessTH() tempThumbnail->Resize((*specIter).Width, (*specIter).Height); pthread_mutex_lock(&thumbnailQueueMutex); - thumbnailComplete.push_back(std::pair<ThumbnailListener*, Thumbnail*>((*specIter).CompletedListener, tempThumbnail)); + thumbnailComplete.push_back(std::pair<ListenerHandle, Thumbnail*>((*specIter).CompletedListener, tempThumbnail)); pthread_mutex_unlock(&thumbnailQueueMutex); } } @@ -286,7 +286,7 @@ void ThumbnailBroker::thumbnailQueueProcessTH() tempThumbnail->Resize((*specIter).Width, (*specIter).Height); pthread_mutex_lock(&thumbnailQueueMutex); - thumbnailComplete.push_back(std::pair<ThumbnailListener*, Thumbnail*>((*specIter).CompletedListener, tempThumbnail)); + thumbnailComplete.push_back(std::pair<ListenerHandle, Thumbnail*>((*specIter).CompletedListener, tempThumbnail)); pthread_mutex_unlock(&thumbnailQueueMutex); } } @@ -314,10 +314,10 @@ void ThumbnailBroker::RetrieveThumbnail(int saveID, int width, int height, Thumb RetrieveThumbnail(saveID, 0, width, height, tListener); } -bool ThumbnailBroker::CheckThumbnailListener(ThumbnailListener * tListener) +bool ThumbnailBroker::CheckThumbnailListener(ListenerHandle handle) { pthread_mutex_lock(&listenersMutex); - int count = std::count(validListeners.begin(), validListeners.end(), tListener); + int count = std::count(validListeners.begin(), validListeners.end(), handle); pthread_mutex_unlock(&listenersMutex); return count; @@ -326,7 +326,7 @@ bool ThumbnailBroker::CheckThumbnailListener(ThumbnailListener * tListener) void ThumbnailBroker::AttachThumbnailListener(ThumbnailListener * tListener) { pthread_mutex_lock(&listenersMutex); - validListeners.push_back(tListener); + validListeners.push_back(ListenerHandle(tListener->ListenerRand, tListener)); pthread_mutex_unlock(&listenersMutex); } @@ -334,10 +334,10 @@ void ThumbnailBroker::DetachThumbnailListener(ThumbnailListener * tListener) { pthread_mutex_lock(&listenersMutex); - std::vector<ThumbnailListener*>::iterator iter = validListeners.begin(); + std::vector<ListenerHandle>::iterator iter = validListeners.begin(); while (iter != validListeners.end()) { - if(*iter == tListener) + if(*iter == ListenerHandle(tListener->ListenerRand, tListener)) iter = validListeners.erase(iter); else ++iter; |
