X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresources%2Fresourcemanager.h;h=e2926be41a82a98ba184c7a6b5194a11a24db4bc;hb=99ca354f18119f82f1adeca100cd665a8f640317;hp=2b9aef58f6414af9073988898e08e04483861e6a;hpb=3a1b9cbe2441ae670a97541dc8ccb0a2860c8302;p=libs%2Fgl.git diff --git a/source/resources/resourcemanager.h b/source/resources/resourcemanager.h index 2b9aef58..e2926be4 100644 --- a/source/resources/resourcemanager.h +++ b/source/resources/resourcemanager.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -23,7 +24,7 @@ public: }; -class ResourceManager +class ResourceManager: public NonCopyable { public: enum LoadingPolicy @@ -80,7 +81,7 @@ private: class LoadingThread: public Thread { private: - Semaphore sem; + Msp::Semaphore sem; Mutex queue_mutex; std::deque async_queue; std::deque sync_queue; @@ -112,21 +113,20 @@ private: void terminate(); }; - LoadingPolicy policy; - bool async_loads; + LoadingPolicy policy = LOAD_ON_DEMAND; + bool async_loads = true; mutable Mutex map_mutex; 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; - unsigned next_unload; + std::uint64_t total_data_size = 0; + std::uint64_t size_limit = 0; + unsigned frame = 0; + unsigned min_retain_frames = 30; + unsigned max_retain_frames = 0; + unsigned next_unload = 0; LoadingThread thread; public: - ResourceManager(); ~ResourceManager(); void set_loading_policy(LoadingPolicy); @@ -136,6 +136,7 @@ public: void set_max_retain_frames(unsigned); void add_resource(Resource &); + void move_resource(Resource &, Resource &); private: const ManagedResource &get_managed_resource(const Resource &) const; ManagedResource &get_managed_resource(const Resource &);