mockicd: Fix queue destruction for multiple devices
authornyorain <nyorain@gmail.com>
Fri, 21 Jan 2022 15:09:49 +0000 (16:09 +0100)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Wed, 26 Jan 2022 22:49:07 +0000 (15:49 -0700)
icd/generated/mock_icd.cpp
scripts/mock_icd_generator.py

index 24a9c61..5642f39 100644 (file)
@@ -381,14 +381,13 @@ static VKAPI_ATTR void VKAPI_CALL DestroyDevice(
     unique_lock_t lock(global_lock);
     // First destroy sub-device objects
     // Destroy Queues
-    for (auto dev_queue_map_pair : queue_map) {
-        for (auto queue_family_map_pair : queue_map[dev_queue_map_pair.first]) {
-            for (auto index_queue_pair : queue_map[dev_queue_map_pair.first][queue_family_map_pair.first]) {
-                DestroyDispObjHandle((void*)index_queue_pair.second);
-            }
+    for (auto queue_family_map_pair : queue_map[device]) {
+        for (auto index_queue_pair : queue_map[device][queue_family_map_pair.first]) {
+            DestroyDispObjHandle((void*)index_queue_pair.second);
         }
     }
-    queue_map.clear();
+
+    queue_map.erase(device);
     buffer_map.erase(device);
     image_memory_size_map.erase(device);
     // Now destroy device
index 5973c00..6fd8621 100644 (file)
@@ -503,14 +503,13 @@ CUSTOM_C_INTERCEPTS = {
     unique_lock_t lock(global_lock);
     // First destroy sub-device objects
     // Destroy Queues
-    for (auto dev_queue_map_pair : queue_map) {
-        for (auto queue_family_map_pair : queue_map[dev_queue_map_pair.first]) {
-            for (auto index_queue_pair : queue_map[dev_queue_map_pair.first][queue_family_map_pair.first]) {
-                DestroyDispObjHandle((void*)index_queue_pair.second);
-            }
+    for (auto queue_family_map_pair : queue_map[device]) {
+        for (auto index_queue_pair : queue_map[device][queue_family_map_pair.first]) {
+            DestroyDispObjHandle((void*)index_queue_pair.second);
         }
     }
-    queue_map.clear();
+
+    queue_map.erase(device);
     buffer_map.erase(device);
     image_memory_size_map.erase(device);
     // Now destroy device