|
|
@@ -30,10 +30,10 @@ ResourceLoader::~ResourceLoader()
|
|
|
_thread.stop();
|
|
|
}
|
|
|
|
|
|
-void ResourceLoader::add_request(StringId64 type, StringId64 name, Allocator& a)
|
|
|
+void ResourceLoader::add_request(const ResourceRequest& rr)
|
|
|
{
|
|
|
ScopedMutex sm(_mutex);
|
|
|
- queue::push_back(_requests, make_request(type, name, a));
|
|
|
+ queue::push_back(_requests, rr);
|
|
|
}
|
|
|
|
|
|
void ResourceLoader::flush()
|
|
|
@@ -47,17 +47,20 @@ uint32_t ResourceLoader::num_requests()
|
|
|
return queue::size(_requests);
|
|
|
}
|
|
|
|
|
|
-void ResourceLoader::add_loaded(ResourceData data)
|
|
|
+void ResourceLoader::add_loaded(ResourceRequest rr)
|
|
|
{
|
|
|
ScopedMutex sm(_loaded_mutex);
|
|
|
- queue::push_back(_loaded, data);
|
|
|
+ queue::push_back(_loaded, rr);
|
|
|
}
|
|
|
|
|
|
-void ResourceLoader::get_loaded(Array<ResourceData>& loaded)
|
|
|
+void ResourceLoader::get_loaded(Array<ResourceRequest>& loaded)
|
|
|
{
|
|
|
ScopedMutex sm(_loaded_mutex);
|
|
|
- uint32_t num = queue::size(_loaded);
|
|
|
- for (uint32_t i = 0; i < num; i++)
|
|
|
+
|
|
|
+ const uint32_t num = queue::size(_loaded);
|
|
|
+ array::reserve(loaded, num);
|
|
|
+
|
|
|
+ for (uint32_t i = 0; i < num; ++i)
|
|
|
{
|
|
|
array::push_back(loaded, queue::front(_loaded));
|
|
|
queue::pop_front(_loaded);
|
|
|
@@ -74,27 +77,23 @@ int32_t ResourceLoader::run()
|
|
|
_mutex.unlock();
|
|
|
continue;
|
|
|
}
|
|
|
- ResourceRequest id = queue::front(_requests);
|
|
|
+ ResourceRequest rr = queue::front(_requests);
|
|
|
_mutex.unlock();
|
|
|
|
|
|
- ResourceData rd;
|
|
|
- rd.type = id.type;
|
|
|
- rd.name = id.name;
|
|
|
-
|
|
|
char name[1 + 2*StringId64::STRING_LENGTH];
|
|
|
- id.type.to_string(name);
|
|
|
+ rr.type.to_string(name);
|
|
|
name[16] = '-';
|
|
|
- id.name.to_string(name + 17);
|
|
|
+ rr.name.to_string(name + 17);
|
|
|
|
|
|
TempAllocator256 alloc;
|
|
|
DynamicString path(alloc);
|
|
|
path::join(CROWN_DATA_DIRECTORY, name, path);
|
|
|
|
|
|
File* file = _fs.open(path.c_str(), FOM_READ);
|
|
|
- rd.data = resource_on_load(id.type, *file, *id.allocator);
|
|
|
+ rr.data = resource_on_load(rr.type, *file, *rr.allocator);
|
|
|
_fs.close(file);
|
|
|
|
|
|
- add_loaded(rd);
|
|
|
+ add_loaded(rr);
|
|
|
_mutex.lock();
|
|
|
queue::pop_front(_requests);
|
|
|
_mutex.unlock();
|