X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fresourcemanager.h;h=9dcd9b997a56a25214ea691d27f2f616197ae55f;hp=fb4353350f4c2138a1b4a4d1d541b08bf1016f61;hb=HEAD;hpb=7db48f2836ec42c6e2dbeff336634a03bc6d7a62 diff --git a/source/resourcemanager.h b/source/resourcemanager.h deleted file mode 100644 index fb435335..00000000 --- a/source/resourcemanager.h +++ /dev/null @@ -1,94 +0,0 @@ -#ifndef MSP_GL_RESOURCEMANAGER_H_ -#define MSP_GL_RESOURCEMANAGER_H_ - -#include -#include -#include -#include -#include "resource.h" - -namespace Msp { -namespace GL { - -class ResourceManager -{ -public: - enum LoadingPolicy - { - LOAD_IMMEDIATELY, - LOAD_ON_DEMAND, - LOAD_MANUALLY - }; - -private: - struct ManagedResource - { - Resource *resource; - DataFile::Collection *collection; - std::string name; - IO::Seekable *io; - Resource::AsyncLoader *loader; - - ManagedResource(Resource &); - }; - - 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::list LoadQueue; - - LoadingPolicy policy; - bool async_loads; - std::map resources; - std::list queue; - LoadingThread thread; - -public: - ResourceManager(); - ~ResourceManager(); - - void set_loading_policy(LoadingPolicy); - void set_async_loads(bool); - - void add_resource(Resource &); - void set_resource_location(Resource &, DataFile::Collection &, const std::string &); - void load_resource(const Resource &); - void remove_resource(Resource &); - - void tick(); -}; - -} // namespace GL -} // namespace Msp - -#endif