#include <msp/debug/demangle.h>
#include <msp/strings/format.h>
#include <msp/time/utils.h>
+#include "error.h"
#include "resourcemanager.h"
#include "resources.h"
#include "resourceobserver.h"
{ }
-ResourceManager::ResourceManager():
- policy(LOAD_ON_DEMAND),
- async_loads(true),
- total_data_size(0),
- size_limit(0),
- frame(0),
- min_retain_frames(30),
- max_retain_frames(0),
- next_unload(0)
-{ }
-
ResourceManager::~ResourceManager()
{
thread.terminate();
async_loads = a;
}
-void ResourceManager::set_size_limit(UInt64 s)
+void ResourceManager::set_size_limit(uint64_t s)
{
size_limit = s;
}
void ResourceManager::add_resource(Resource &r)
{
+ if(r.get_manager()!=this)
+ throw invalid_operation("ResourceManager::add_resource");
MutexLock lock(map_mutex);
insert_unique(resources, &r, ManagedResource(r));
}
while(total_data_size>size_limit)
{
ManagedResource *best = 0;
- UInt64 best_impact = 0;
+ uint64_t best_impact = 0;
for(auto &kvp: resources)
if(kvp.second.state==ManagedResource::LOADED && kvp.second.last_used<unload_limit)
{
- UInt64 impact = kvp.second.data_size*(frame-kvp.second.last_used);
+ uint64_t impact = kvp.second.data_size*(frame-kvp.second.last_used);
if(!best || impact>best_impact)
{
best = &kvp.second;
return any_finished;
}
-UInt64 ResourceManager::LoadingThread::get_and_reset_loaded_data_size()
+uint64_t ResourceManager::LoadingThread::get_and_reset_loaded_data_size()
{
MutexLock lock(data_size_mutex);
- UInt64 result = loaded_data_size;
+ uint64_t result = loaded_data_size;
loaded_data_size = 0;
return result;
}