X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fresourcemanager.h;h=f5ccac3bbf9a212eefe8611a865bb25a059737b2;hb=82bb8a7a23e4010e8aea7f2a7cd128ca0f3b7101;hp=07b0aaf09f0574fe2ee8f6fbaea7be162f9660b7;hpb=8ed7051d1a80c7e8b198d96575338eee6a5e2485;p=libs%2Fgl.git diff --git a/source/resourcemanager.h b/source/resourcemanager.h index 07b0aaf0..f5ccac3b 100644 --- a/source/resourcemanager.h +++ b/source/resourcemanager.h @@ -1,6 +1,7 @@ #ifndef MSP_GL_RESOURCEMANAGER_H_ #define MSP_GL_RESOURCEMANAGER_H_ +#include #include #include #include @@ -10,6 +11,8 @@ namespace Msp { namespace GL { +class ResourceWatcher; + class ResourceManager { public: @@ -30,12 +33,17 @@ private: Resource::AsyncLoader *loader; bool loaded; unsigned last_used; + UInt64 data_size; + std::vector watchers; ManagedResource(Resource &); void start_loading(); void finish_loading(); void unload(); + + void add_watcher(ResourceWatcher &); + void remove_watcher(ResourceWatcher &); }; class LoadingThread: public Thread @@ -78,6 +86,7 @@ private: bool async_loads; ResourceMap resources; LoadQueue queue; + UInt64 size_limit; unsigned frame; unsigned min_retain_frames; unsigned max_retain_frames; @@ -90,6 +99,8 @@ public: void set_loading_policy(LoadingPolicy); void set_async_loads(bool); + void set_size_limit(UInt64); + void set_min_retain_frames(unsigned); void set_max_retain_frames(unsigned); void add_resource(Resource &); @@ -99,7 +110,11 @@ public: void resource_used(const Resource &); void remove_resource(Resource &); + void watch_resource(const Resource &, ResourceWatcher &); + void unwatch_resource(const Resource &, ResourceWatcher &); + void tick(); + UInt64 get_total_data_size() const; }; } // namespace GL