X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fresourcemanager.h;h=9dcd9b997a56a25214ea691d27f2f616197ae55f;hp=244c67ec29cc5acda96ea303bddda0f7583cf1ee;hb=HEAD;hpb=c939385809062a26b23fad9be7c4062b1bf610a1 diff --git a/source/resourcemanager.h b/source/resourcemanager.h deleted file mode 100644 index 244c67ec..00000000 --- a/source/resourcemanager.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef MSP_GL_RESOURCEMANAGER_H_ -#define MSP_GL_RESOURCEMANAGER_H_ - -#include -#include -#include -#include -#include -#include "resource.h" - -namespace Msp { -namespace GL { - -class ResourceWatcher; - -class ResourceManager -{ -public: - enum LoadingPolicy - { - LOAD_IMMEDIATELY, - LOAD_ON_DEMAND, - LOAD_MANUALLY - }; - -private: - struct ManagedResource - { - enum ResourceState - { - NOT_LOADED, - LOAD_QUEUED, - LOADING, - LOADED - }; - - Resource *resource; - DataFile::Collection *collection; - std::string name; - IO::Seekable *io; - Resource::AsyncLoader *loader; - ResourceState state; - 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 - { - public: - enum State - { - IDLE, - SYNC_PENDING, - BUSY, - LOAD_FINISHED, - TERMINATING - }; - - private: - ResourceManager &manager; - Semaphore sem; - ManagedResource *volatile resource; - volatile State state; - - public: - LoadingThread(ResourceManager &); - - private: - virtual void main(); - - public: - void set_resource(ManagedResource *); - ManagedResource *get_resource() const { return resource; } - void sync(); - State get_state() const { return state; } - - void terminate(); - }; - - typedef std::map ResourceMap; - typedef std::list LoadQueue; - - LoadingPolicy policy; - bool async_loads; - ResourceMap resources; - LoadQueue queue; - UInt64 size_limit; - unsigned frame; - unsigned min_retain_frames; - unsigned max_retain_frames; - unsigned next_unload; - LoadingThread thread; - -public: - ResourceManager(); - ~ResourceManager(); - - 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 &); - void *get_data_for_resource(const Resource &); - void set_resource_location(Resource &, DataFile::Collection &, const std::string &); - void load_resource(Resource &); - 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 -} // namespace Msp - -#endif