diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-14 11:03:33 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-14 11:03:33 (GMT) |
| commit | b05a847e967f5223b287e85f06b2be382b89fe19 (patch) | |
| tree | beb6176d2c3bfffd48e50e6d038ee420f9d12ed4 /src/client/ThumbnailBroker.cpp | |
| parent | c259521e5e7985176d9ed19b4be509c4e820d954 (diff) | |
| download | powder-b05a847e967f5223b287e85f06b2be382b89fe19.zip powder-b05a847e967f5223b287e85f06b2be382b89fe19.tar.gz | |
Fix crash when using search (std::remove doesn't seem to work as I expected), Add clickable author names for search. Fixes #95
Diffstat (limited to 'src/client/ThumbnailBroker.cpp')
| -rw-r--r-- | src/client/ThumbnailBroker.cpp | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/src/client/ThumbnailBroker.cpp b/src/client/ThumbnailBroker.cpp index e8114b9..3a6bc14 100644 --- a/src/client/ThumbnailBroker.cpp +++ b/src/client/ThumbnailBroker.cpp @@ -96,9 +96,6 @@ void ThumbnailBroker::RenderThumbnail(GameSave * gameSave, int width, int height void ThumbnailBroker::RetrieveThumbnail(int saveID, int saveDate, int width, int height, ThumbnailListener * tListener) { -#ifdef DEBUG - std::cout << typeid(*this).name() << " New Thumbnail Retrieval request for " << saveID << ":" << saveDate << std::endl; -#endif AttachThumbnailListener(tListener); pthread_mutex_lock(&thumbnailQueueMutex); bool running = thumbnailQueueRunning; @@ -127,7 +124,9 @@ void ThumbnailBroker::FlushThumbQueue() while(thumbnailComplete.size()) { if(CheckThumbnailListener(thumbnailComplete.front().first)) + { thumbnailComplete.front().first->OnThumbnailReady(thumbnailComplete.front().second); + } else { #ifdef DEBUG @@ -146,13 +145,13 @@ void ThumbnailBroker::thumbnailQueueProcessTH() while(true) { //Shutdown after 2 seconds of idle - //if(time(NULL) - lastAction > 2) - //{ - // pthread_mutex_lock(&thumbnailQueueMutex); - // thumbnailQueueRunning = false; - // pthread_mutex_unlock(&thumbnailQueueMutex); - // break; - //} + if(time(NULL) - lastAction > 2) + { + pthread_mutex_lock(&thumbnailQueueMutex); + thumbnailQueueRunning = false; + pthread_mutex_unlock(&thumbnailQueueMutex); + break; + } //Renderer pthread_mutex_lock(&thumbnailQueueMutex); @@ -379,6 +378,15 @@ void ThumbnailBroker::AttachThumbnailListener(ThumbnailListener * tListener) void ThumbnailBroker::DetachThumbnailListener(ThumbnailListener * tListener) { pthread_mutex_lock(&listenersMutex); - std::remove(validListeners.begin(), validListeners.end(), tListener); + + std::vector<ThumbnailListener*>::iterator iter = validListeners.begin(); + while (iter != validListeners.end()) + { + if(*iter == tListener) + iter = validListeners.erase(iter); + else + ++iter; + } + pthread_mutex_unlock(&listenersMutex); }
\ No newline at end of file |
