From 4818d96499fe96fbf421f86762f27002a4660efa Mon Sep 17 00:00:00 2001 From: El Date: Thu, 18 Dec 2025 22:19:57 +0000 Subject: [PATCH] VNC-151 Fix hw_ctx_guard reset placement to ensure proper resource management --- common/rfb/encoders/EncoderProbe.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common/rfb/encoders/EncoderProbe.cpp b/common/rfb/encoders/EncoderProbe.cpp index 79c744e..79e560e 100644 --- a/common/rfb/encoders/EncoderProbe.cpp +++ b/common/rfb/encoders/EncoderProbe.cpp @@ -79,10 +79,10 @@ namespace rfb::video_encoders { FFmpeg::BufferGuard hw_ctx_guard; AVBufferRef *hw_ctx{}; - hw_ctx_guard.reset(hw_ctx); if (dri_node) { const auto err = ffmpeg.av_hwdevice_ctx_create(&hw_ctx, encoder_candidate.hw_type, dri_node, nullptr, 0); + hw_ctx_guard.reset(hw_ctx); if (err == 0) { drm_device_path = dri_node; result.push_back(encoder_candidate.encoder); @@ -93,6 +93,7 @@ namespace rfb::video_encoders { vlog.debug("Trying to open all DRM devices"); for (const auto *drm_dev_path: drm_device_paths) { const auto err = ffmpeg.av_hwdevice_ctx_create(&hw_ctx, encoder_candidate.hw_type, drm_dev_path, nullptr, 0); + hw_ctx_guard.reset(hw_ctx); if (err < 0) { vlog.error("%s", ffmpeg.get_error_description(err).c_str());