diff --git a/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.cpp b/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.cpp index 5bbf231626..30ce8fe29b 100644 --- a/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.cpp +++ b/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.cpp @@ -23,14 +23,11 @@ THE SOFTWARE. #include "vaapi_videodecoder.h" VaapiVideoDecoder::VaapiVideoDecoder(RocDecoderCreateInfo &decoder_create_info) : decoder_create_info_{decoder_create_info}, - drm_fd_{-1}, va_display_{0}, va_config_attrib_{{}}, va_config_id_{0}, va_profile_ {VAProfileNone}, va_context_id_{0}, va_surface_ids_{{}}, + va_display_{0}, va_config_attrib_{{}}, va_config_id_{0}, va_profile_ {VAProfileNone}, va_context_id_{0}, va_surface_ids_{{}}, supports_modifiers_{false}, pic_params_buf_id_{0}, iq_matrix_buf_id_{0}, num_slices_{0}, slice_data_buf_id_{0} { }; VaapiVideoDecoder::~VaapiVideoDecoder() { - if (drm_fd_ != -1) { - close(drm_fd_); - } if (va_display_) { rocDecStatus rocdec_status = ROCDEC_SUCCESS; rocdec_status = DestroyDataBuffers(); @@ -517,6 +514,9 @@ VaContext::VaContext() { VaContext::~VaContext() { for (int i = 0; i < va_contexts_.size(); i++) { + if (va_contexts_[i].drm_fd != -1) { + close(va_contexts_[i].drm_fd); + } if (va_contexts_[i].va_display) { if (vaTerminate(va_contexts_[i].va_display) != VA_STATUS_SUCCESS) { ERR("Failed to termiate VA"); diff --git a/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.h b/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.h index 821b11951e..9a290a41c9 100644 --- a/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.h +++ b/projects/rocdecode/src/rocdecode/vaapi/vaapi_videodecoder.h @@ -101,7 +101,6 @@ public: private: RocDecoderCreateInfo decoder_create_info_; - int drm_fd_; VADisplay va_display_; VAConfigAttrib va_config_attrib_; VAConfigID va_config_id_;