zink: refactor fence destruction

Acked-by: Jordan Justen <jordan.l.justen@intel.com>
This commit is contained in:
Erik Faye-Lund 2019-07-10 14:11:56 +02:00
parent 4c5ade8ca6
commit dbf67e8a20

View file

@ -27,6 +27,14 @@
#include "util/u_memory.h"
static void
destroy_fence(struct zink_screen *screen, struct zink_fence *fence)
{
if (fence->fence)
vkDestroyFence(screen->dev, fence->fence, NULL);
FREE(fence);
}
struct zink_fence *
zink_create_fence(struct pipe_screen *pscreen)
{
@ -50,7 +58,7 @@ zink_create_fence(struct pipe_screen *pscreen)
return ret;
fail:
FREE(ret);
destroy_fence(screen, ret);
return NULL;
}
@ -59,10 +67,8 @@ zink_fence_reference(struct zink_screen *screen,
struct zink_fence **ptr,
struct zink_fence *fence)
{
if (pipe_reference(&(*ptr)->reference, &fence->reference)) {
vkDestroyFence(screen->dev, (*ptr)->fence, NULL);
free(*ptr);
}
if (pipe_reference(&(*ptr)->reference, &fence->reference))
destroy_fence(screen, *ptr);
*ptr = fence;
}