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.h | |
| 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.h')
| -rw-r--r-- | src/client/ThumbnailBroker.h | 20 |
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 |
