vulkan: NULL check destruction of vulkan resources

If the element fails to start up, any number of vulkan resources could
have not been created.
This commit is contained in:
Matthew Waters 2019-11-13 12:14:02 +11:00 committed by GStreamer Merge Bot
parent 0c3eec57f2
commit 726261aa05
2 changed files with 23 additions and 17 deletions

View file

@ -767,21 +767,25 @@ gst_vulkan_full_screen_render_stop (GstBaseTransform * bt)
else
last_fence = gst_vulkan_fence_new_always_signalled (render->device);
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_pipeline (last_fence,
render->graphics_pipeline));
if (render->graphics_pipeline)
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_pipeline (last_fence,
render->graphics_pipeline));
render->graphics_pipeline = VK_NULL_HANDLE;
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_pipeline_layout (last_fence,
render->pipeline_layout));
if (render->pipeline_layout)
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_pipeline_layout (last_fence,
render->pipeline_layout));
render->pipeline_layout = VK_NULL_HANDLE;
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_render_pass (last_fence,
render->render_pass));
if (render->render_pass)
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_render_pass (last_fence,
render->render_pass));
render->render_pass = VK_NULL_HANDLE;
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_mini_object_unref (last_fence,
(GstMiniObject *) render->descriptor_set_layout));
if (render->descriptor_set_layout)
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_mini_object_unref (last_fence,
(GstMiniObject *) render->descriptor_set_layout));
render->descriptor_set_layout = NULL;
gst_vulkan_fence_unref (last_fence);

View file

@ -420,12 +420,14 @@ gst_vulkan_image_identity_stop (GstBaseTransform * bt)
else
last_fence = gst_vulkan_fence_new_always_signalled (render->device);
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_object_unref (last_fence,
(GstObject *) vk_identity->descriptor_pool));
if (vk_identity->descriptor_pool)
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_object_unref (last_fence,
(GstObject *) vk_identity->descriptor_pool));
vk_identity->descriptor_pool = NULL;
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_sampler (last_fence, vk_identity->sampler));
if (vk_identity->sampler)
gst_vulkan_trash_list_add (render->trash_list,
gst_vulkan_trash_new_free_sampler (last_fence, vk_identity->sampler));
vk_identity->sampler = VK_NULL_HANDLE;
gst_vulkan_fence_unref (last_fence);