From 83f59945a6b5289ec1f8cb5d7f6046d43efe6ebd Mon Sep 17 00:00:00 2001 From: Raphael Robatsch Date: Sat, 3 Dec 2022 18:30:32 +0100 Subject: [PATCH] fix crash when an output goes away happens e.g. when a monitor is powered off. The wl_output interface published by dwl has version 1, but the wl_output_release request is only supported since version 3. --- src/common.hpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common.hpp b/src/common.hpp index aed4480..c905358 100644 --- a/src/common.hpp +++ b/src/common.hpp @@ -54,8 +54,14 @@ struct WlDeleter; template using wl_unique_ptr = std::unique_ptr>; +inline void wl_output_release_checked(wl_output* output) { + if (wl_output_get_version(output) >= WL_OUTPUT_RELEASE_SINCE_VERSION) { + wl_output_release(output); + } +} + WL_DELETER(wl_buffer, wl_buffer_destroy); -WL_DELETER(wl_output, wl_output_release); +WL_DELETER(wl_output, wl_output_release_checked); WL_DELETER(wl_pointer, wl_pointer_release); WL_DELETER(wl_seat, wl_seat_release); WL_DELETER(wl_surface, wl_surface_destroy);