summaryrefslogtreecommitdiff
path: root/src/client/ThumbnailBroker.cpp
diff options
context:
space:
mode:
authorSimon 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)
commitb05a847e967f5223b287e85f06b2be382b89fe19 (patch)
treebeb6176d2c3bfffd48e50e6d038ee420f9d12ed4 /src/client/ThumbnailBroker.cpp
parentc259521e5e7985176d9ed19b4be509c4e820d954 (diff)
downloadpowder-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.cpp30
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