Skip to content

Commit 1f8013c

Browse files
committed
disp/vulkan_sdl3: Use unique_ptr for window_callback & vkd::VulkanDisplay
1 parent 5fd95f5 commit 1f8013c

1 file changed

Lines changed: 4 additions & 10 deletions

File tree

src/video_display/vulkan/vulkan_sdl3.cpp

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -172,9 +172,8 @@ struct state_vulkan_sdl3 {
172172

173173
SDL_Window* window = nullptr;
174174

175-
// Use raw pointers because std::unique_ptr might not have standard layout
176-
vkd::VulkanDisplay* vulkan = nullptr;
177-
WindowCallback* window_callback = nullptr;
175+
std::unique_ptr<vkd::VulkanDisplay> vulkan;
176+
std::unique_ptr<WindowCallback> window_callback;
178177
FrameMappings frame_mappings;
179178

180179
std::atomic<bool> should_exit = false;
@@ -861,7 +860,7 @@ void* display_vulkan_init(module* parent, const char* fmt, unsigned int flags) {
861860
log_msg(LOG_LEVEL_ERROR, MOD_NAME "Unable to create window : %s\n", SDL_GetError());
862861
return nullptr;
863862
}
864-
s->window_callback = new WindowCallback(s->window);
863+
s->window_callback = std::make_unique<WindowCallback>(s->window);
865864
if (!vulkan_sdl3_set_window_position(s.get(), &args)) {
866865
return nullptr;
867866
}
@@ -882,7 +881,7 @@ void* display_vulkan_init(module* parent, const char* fmt, unsigned int flags) {
882881
std::cout << SDL_GetError() << std::endl;
883882
throw std::runtime_error("SDL cannot create surface.");
884883
}
885-
s->vulkan = new vkd::VulkanDisplay{};
884+
s->vulkan = std::make_unique<vkd::VulkanDisplay>();
886885
s->vulkan->init(std::move(instance), vk::SurfaceKHR(surface),
887886
initial_frame_count, *s->window_callback,
888887
args.gpu_idx, std::move(path_to_shaders),
@@ -906,11 +905,6 @@ void display_vulkan_done(void* state) {
906905
}
907906
catch (std::exception& e) { log_and_exit_uv(e); }
908907

909-
delete s->vulkan;
910-
s->vulkan = nullptr;
911-
delete s->window_callback;
912-
s->window_callback = nullptr;
913-
914908
if (s->window) {
915909
SDL_DestroyWindow(s->window);
916910
s->window = nullptr;

0 commit comments

Comments
 (0)