layers: Add DEBUG_OUTPUT support to swapchain
diff --git a/layers/swapchain.cpp b/layers/swapchain.cpp
index 3143741..304f96b 100644
--- a/layers/swapchain.cpp
+++ b/layers/swapchain.cpp
@@ -130,6 +130,7 @@
     uint32_t debug_action = 0;
     FILE *log_output = NULL;
     const char *option_str;
+    VkDbgMsgCallback callback;
 
     // Initialize Swapchain options:
     report_flags = getLayerOptionFlags("SwapchainReportFlags", 0);
@@ -142,7 +143,12 @@
         log_output = getLayerLogOutput(option_str, "Swapchain");
         layer_create_msg_callback(my_data->report_data, report_flags,
                                   log_callback, (void *) log_output,
-                                  &my_data->logging_callback);
+                                  &callback);
+        my_data->logging_callback.push_back(callback);
+    }
+    if (debug_action & VK_DBG_LAYER_ACTION_DEBUG_OUTPUT) {
+        layer_create_msg_callback(my_data->report_data, report_flags, win32_debug_output_msg, NULL, &callback);
+        my_data->logging_callback.push_back(callback);
     }
 }
 
@@ -244,8 +250,10 @@
 
         // Clean up logging callback, if any
         layer_data *my_data = get_my_data_ptr(key, layer_data_map);
-        if (my_data->logging_callback) {
-            layer_destroy_msg_callback(my_data->report_data, my_data->logging_callback);
+        while (my_data->logging_callback.size() > 0) {
+            VkDbgMsgCallback callback = my_data->logging_callback.back();
+            layer_destroy_msg_callback(my_data->report_data, callback);
+            my_data->logging_callback.pop_back();
         }
         layer_debug_report_destroy_instance(my_data->report_data);
         layer_data_map.erase(key);
diff --git a/layers/swapchain.h b/layers/swapchain.h
index 80a6ea4..21a2fe6 100644
--- a/layers/swapchain.h
+++ b/layers/swapchain.h
@@ -28,6 +28,8 @@
 #ifndef SWAPCHAIN_H
 #define SWAPCHAIN_H
 
+#include <vector>
+
 static const VkLayerProperties globalLayerProps[] = {
     {
         "Swapchain",
@@ -77,11 +79,10 @@
 // The following is for logging error messages:
 struct layer_data {
     debug_report_data *report_data;
-    VkDbgMsgCallback logging_callback;
+    std::vector<VkDbgMsgCallback> logging_callback;
 
     layer_data() :
-        report_data(nullptr),
-        logging_callback(nullptr)
+        report_data(nullptr)
     {};
 };