obs-nvenc: Fix resource destruction order

The NVENC session was destroyed before its child resources
(textures, surfaces) were cleaned up, causing resource cleanup
calls to operate on an invalid session handle.

Reorder destruction to free all registered resources before
destroying the encoder session.
This commit is contained in:
tfo
2026-02-10 01:27:19 +01:00
committed by Ryan Foster
parent a0a480dc80
commit bd96ff53dd

View File

@@ -1029,16 +1029,19 @@ static void nvenc_destroy(void *data)
for (size_t i = 0; i < enc->bitstreams.num; i++) {
nv_bitstream_free(enc, &enc->bitstreams.array[i]);
}
if (enc->session)
nv.nvEncDestroyEncoder(enc->session);
#ifdef _WIN32
d3d11_free_textures(enc);
d3d11_free(enc);
#else
cuda_opengl_free(enc);
#endif
cuda_free_surfaces(enc);
if (enc->session)
nv.nvEncDestroyEncoder(enc->session);
#ifdef _WIN32
d3d11_free(enc);
#endif
cuda_ctx_free(enc);
bfree(enc->header);