]> git.tdb.fi Git - libs/gl.git/blobdiff - source/resources/resourcemanager.cpp
Add correct copy and move semantics to most classes
[libs/gl.git] / source / resources / resourcemanager.cpp
index 02a93d949997c3aae421b3f4322e3bfb0881a855..c72b361ce1f41ae9ec69d73d69a7d0e7307fcb21 100644 (file)
@@ -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<ManagedResource *>(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);