X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources%2Fresourcemanager.h;h=2b9aef58f6414af9073988898e08e04483861e6a;hb=b4dfecd72df8bb342ddb20c46516ba6cb62e5600;hp=ba4f39a9461668cbe4912a9f2d8afe5a8ee38e97;hpb=fdff67dff702ef3a87b388461c60d195789e0dc9;p=libs%2Fgl.git diff --git a/source/resources/resourcemanager.h b/source/resources/resourcemanager.h index ba4f39a9..2b9aef58 100644 --- a/source/resources/resourcemanager.h +++ b/source/resources/resourcemanager.h @@ -1,7 +1,8 @@ #ifndef MSP_GL_RESOURCEMANAGER_H_ #define MSP_GL_RESOURCEMANAGER_H_ -#include +#include +#include #include #include #include @@ -61,7 +62,7 @@ private: Resource::AsyncLoader *loader; State state; unsigned last_used; - UInt64 data_size; + std::uint64_t data_size; std::vector observers; ManagedResource(Resource &); @@ -76,20 +77,18 @@ private: void remove_observer(ResourceObserver &); }; - typedef std::list LoadQueue; - class LoadingThread: public Thread { private: Semaphore sem; Mutex queue_mutex; - LoadQueue async_queue; - LoadQueue sync_queue; + std::deque async_queue; + std::deque sync_queue; unsigned capacity; unsigned size; std::list error_queue; Mutex data_size_mutex; - UInt64 loaded_data_size; + std::uint64_t loaded_data_size; volatile bool done; public: @@ -98,7 +97,7 @@ private: private: virtual void main(); - ManagedResource *front(LoadQueue &); + ManagedResource *front(std::deque &); public: void add_resource(ManagedResource &); @@ -108,20 +107,18 @@ private: public: bool sync(); bool needs_work() const { return size ResourceMap; - LoadingPolicy policy; bool async_loads; mutable Mutex map_mutex; - ResourceMap resources; - LoadQueue queue; - UInt64 total_data_size; - UInt64 size_limit; + std::map resources; + std::deque queue; + std::uint64_t total_data_size; + std::uint64_t size_limit; unsigned frame; unsigned min_retain_frames; unsigned max_retain_frames; @@ -134,7 +131,7 @@ public: void set_loading_policy(LoadingPolicy); void set_async_loads(bool); - void set_size_limit(UInt64); + void set_size_limit(std::uint64_t); void set_min_retain_frames(unsigned); void set_max_retain_frames(unsigned); @@ -161,7 +158,7 @@ private: void unload_by_age(); void unload_by_size(); public: - UInt64 get_total_data_size() const { return total_data_size; } + std::uint64_t get_total_data_size() const { return total_data_size; } private: static bool age_order(ManagedResource *, ManagedResource *);