X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fresources%2Fresourcemanager.cpp;h=c72b361ce1f41ae9ec69d73d69a7d0e7307fcb21;hp=02a93d949997c3aae421b3f4322e3bfb0881a855;hb=e70662d7812464159f2e47f4bebb69d88f89ae93;hpb=28d12c73b197a16f7635badc01e42375728fde85 diff --git a/source/resources/resourcemanager.cpp b/source/resources/resourcemanager.cpp index 02a93d94..c72b361c 100644 --- a/source/resources/resourcemanager.cpp +++ b/source/resources/resourcemanager.cpp @@ -63,6 +63,16 @@ void ResourceManager::add_resource(Resource &r) insert_unique(resources, &r, ManagedResource(r)); } +void ResourceManager::move_resource(Resource &from, Resource &to) +{ + if(to.get_manager()!=this || from.get_manager_data()!=to.get_manager_data()) + throw invalid_operation("ResourceManager::move_resource"); + ManagedResource *managed = reinterpret_cast(to.get_manager_data()); + MutexLock lock(map_mutex); + insert_unique(resources, &to, *managed); + resources.erase(&from); +} + const ResourceManager::ManagedResource &ResourceManager::get_managed_resource(const Resource &r) const { MutexLock lock(map_mutex);