#pragma once #include #include #include #include #include #undef GetUserName //God dammit microsoft! #include "Singleton.h" class GameSave; class Thumbnail; class ThumbnailListener; class ThumbnailBroker: public Singleton { private: class ThumbnailID; class ThumbnailRequest; class ThumbnailSpec; class ThumbRenderRequest; //Thumbnail retreival /*int thumbnailCacheNextID; Thumbnail * thumbnailCache[THUMB_CACHE_SIZE]; void * activeThumbRequests[IMGCONNS]; int activeThumbRequestTimes[IMGCONNS]; int activeThumbRequestCompleteTimes[IMGCONNS]; std::string activeThumbRequestIDs[IMGCONNS];*/ pthread_mutex_t thumbnailQueueMutex; pthread_mutex_t listenersMutex; pthread_t thumbnailQueueThread; bool thumbnailQueueRunning; std::deque thumbnailRequests; std::deque renderRequests; std::deque > thumbnailComplete; std::list currentRequests; std::deque > thumbnailCache; std::vector validListeners; static void * thumbnailQueueProcessHelper(void * ref); void thumbnailQueueProcessTH(); public: ThumbnailBroker(); virtual ~ThumbnailBroker(); void FlushThumbQueue(); void RenderThumbnail(GameSave * gameSave, int width, int height, ThumbnailListener * tListener); 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); void AttachThumbnailListener(ThumbnailListener * tListener); void DetachThumbnailListener(ThumbnailListener * tListener); };