summaryrefslogtreecommitdiff
path: root/src/client/ThumbnailBroker.h
diff options
context:
space:
mode:
authorSimon 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)
commit163fbde8af9ec92e89f3e0cadcb14a7af0b259a0 (patch)
tree348824b799c5a63f9834d4c4edc409d148c3311b /src/client/ThumbnailBroker.h
parent89e96237250be5e305ccfb6cedd9530ccf0e3cf2 (diff)
downloadpowder-163fbde8af9ec92e89f3e0cadcb14a7af0b259a0.zip
powder-163fbde8af9ec92e89f3e0cadcb14a7af0b259a0.tar.gz
Fix issue where thumbnails are sometimes the incorrect ones
Diffstat (limited to 'src/client/ThumbnailBroker.h')
-rw-r--r--src/client/ThumbnailBroker.h20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/client/ThumbnailBroker.h b/src/client/ThumbnailBroker.h
index dfdbfd5..360c386 100644
--- a/src/client/ThumbnailBroker.h
+++ b/src/client/ThumbnailBroker.h
@@ -11,6 +11,7 @@
class GameSave;
class Thumbnail;
class ThumbnailListener;
+typedef std::pair<int, ThumbnailListener*> ListenerHandle;
class ThumbnailBroker: public Singleton<ThumbnailBroker>
{
private:
@@ -18,8 +19,8 @@ private:
{
public:
int Width, Height;
- ThumbnailListener * CompletedListener;
- ThumbnailSpec(int width, int height, ThumbnailListener * completedListener) :
+ ListenerHandle CompletedListener;
+ ThumbnailSpec(int width, int height, ListenerHandle completedListener) :
Width(width), Height(height), CompletedListener(completedListener) {}
};
@@ -45,7 +46,7 @@ private:
ThumbnailID ID;
std::vector<ThumbnailSpec> SubRequests;
- ThumbnailRequest(int saveID, int saveDate, int width, int height, ThumbnailListener * completedListener) :
+ ThumbnailRequest(int saveID, int saveDate, int width, int height, ListenerHandle completedListener) :
ID(saveID, saveDate), Complete(false), HTTPContext(NULL), RequestTime(0)
{
SubRequests.push_back(ThumbnailSpec(width, height, completedListener));
@@ -59,10 +60,10 @@ private:
int Width, Height;
bool Decorations;
GameSave * Save;
- ThumbnailListener * CompletedListener;
- ThumbRenderRequest(GameSave * save, bool decorations, int width, int height, ThumbnailListener * completedListener) :
+ ListenerHandle CompletedListener;
+ ThumbRenderRequest(GameSave * save, bool decorations, int width, int height, ListenerHandle completedListener) :
Save(save), Width(width), Height(height), CompletedListener(completedListener), Decorations(decorations) {}
- ThumbRenderRequest() : Save(0), Decorations(true), Width(0), Height(0), CompletedListener(NULL) {}
+ ThumbRenderRequest() : Save(0), Decorations(true), Width(0), Height(0), CompletedListener(ListenerHandle(0, NULL)) {}
};
//Thumbnail retreival
@@ -80,11 +81,12 @@ private:
std::deque<ThumbnailRequest> thumbnailRequests;
std::deque<ThumbRenderRequest> renderRequests;
- std::deque<std::pair<ThumbnailListener*, Thumbnail*> > thumbnailComplete;
+ std::deque<std::pair<ListenerHandle, Thumbnail*> > thumbnailComplete;
std::list<ThumbnailRequest> currentRequests;
std::deque<std::pair<ThumbnailID, Thumbnail*> > thumbnailCache;
- std::vector<ThumbnailListener*> validListeners;
+
+ std::vector<ListenerHandle> validListeners;
static void * thumbnailQueueProcessHelper(void * ref);
void thumbnailQueueProcessTH();
@@ -99,7 +101,7 @@ public:
void RetrieveThumbnail(int saveID, int saveDate, int width, int height, ThumbnailListener * tListener);
void RetrieveThumbnail(int saveID, int width, int height, ThumbnailListener * tListener);
- bool CheckThumbnailListener(ThumbnailListener * tListener);
+ bool CheckThumbnailListener(ListenerHandle handle);
void AttachThumbnailListener(ThumbnailListener * tListener);
void DetachThumbnailListener(ThumbnailListener * tListener);
}; \ No newline at end of file