X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fstate_trackers%2Fvdpau%2Fhtab.c;h=8b809f2cb5e042d60f616f7d2aa95c33281d0394;hb=337f21bc356a89a9c755aebabb64ba381a59e39b;hp=0c9580553748b14b152a208d1d5c79c1aa40d448;hpb=72e30991559017c16d48569e612dbc0970e3b9ca;p=mesa.git diff --git a/src/gallium/state_trackers/vdpau/htab.c b/src/gallium/state_trackers/vdpau/htab.c index 0c958055374..8b809f2cb5e 100644 --- a/src/gallium/state_trackers/vdpau/htab.c +++ b/src/gallium/state_trackers/vdpau/htab.c @@ -25,8 +25,8 @@ * **************************************************************************/ -#include -#include +#include "util/u_handle_table.h" +#include "os/os_thread.h" #include "vdpau_private.h" #ifdef VL_HANDLES @@ -55,7 +55,7 @@ void vlDestroyHTAB(void) { #ifdef VL_HANDLES pipe_mutex_lock(htab_lock); - if (htab) { + if (htab && !handle_table_get_first_handle(htab)) { handle_table_destroy(htab); htab = NULL; } @@ -92,3 +92,13 @@ void* vlGetDataHTAB(vlHandle handle) return (void*)handle; #endif } + +void vlRemoveDataHTAB(vlHandle handle) +{ +#ifdef VL_HANDLES + pipe_mutex_lock(htab_lock); + if (htab) + handle_table_remove(htab, handle); + pipe_mutex_unlock(htab_lock); +#endif +}