#ifndef MSP_GL_RESOURCEMANAGER_H_
#define MSP_GL_RESOURCEMANAGER_H_
+#include <deque>
#include <msp/core/inttypes.h>
#include <msp/core/mutex.h>
#include <msp/core/semaphore.h>
Resource *resource;
ResourceLocation location;
- bool load_priority;
+ int load_priority;
IO::Seekable *io;
Resource::AsyncLoader *loader;
State state;
void remove_observer(ResourceObserver &);
};
- typedef std::list<ManagedResource *> LoadQueue;
-
class LoadingThread: public Thread
{
private:
Semaphore sem;
Mutex queue_mutex;
- LoadQueue async_queue;
- LoadQueue sync_queue;
+ std::deque<ManagedResource *> async_queue;
+ std::deque<ManagedResource *> sync_queue;
unsigned capacity;
unsigned size;
std::list<resource_load_error> error_queue;
private:
virtual void main();
- ManagedResource *front(LoadQueue &);
+ ManagedResource *front(std::deque<ManagedResource *> &);
public:
void add_resource(ManagedResource &);
void terminate();
};
- typedef std::map<const Resource *, ManagedResource> ResourceMap;
-
LoadingPolicy policy;
bool async_loads;
mutable Mutex map_mutex;
- ResourceMap resources;
- LoadQueue queue;
+ std::map<const Resource *, ManagedResource> resources;
+ std::deque<ManagedResource *> queue;
UInt64 total_data_size;
UInt64 size_limit;
unsigned frame;