0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00

obs-filters: Fix NvAFX mutex leak

This commit is contained in:
jpark37 2021-08-23 22:07:36 -07:00
parent 353868e87c
commit 3d342cd1e1
2 changed files with 18 additions and 4 deletions

View File

@ -140,6 +140,7 @@ struct noise_suppress_data {
#ifdef LIBNVAFX_ENABLED
/* global mutex for nvafx load functions since they aren't thread-safe */
bool nvafx_initializer_mutex_initialized;
pthread_mutex_t nvafx_initializer_mutex;
#endif
@ -516,7 +517,8 @@ bool load_nvafx(void)
return false;
}
pthread_mutex_init(&nvafx_initializer_mutex, NULL);
nvafx_initializer_mutex_initialized =
pthread_mutex_init(&nvafx_initializer_mutex, NULL) == 0;
#define LOAD_SYM_FROM_LIB(sym, lib, dll) \
if (!(sym = (sym##_t)GetProcAddress(lib, #sym))) { \
@ -576,6 +578,18 @@ unload_everything:
#pragma warning(pop)
#endif
void unload_nvafx(void)
{
#ifdef LIBNVAFX_ENABLED
release_lib();
if (nvafx_initializer_mutex_initialized) {
pthread_mutex_destroy(&nvafx_initializer_mutex);
nvafx_initializer_mutex_initialized = false;
}
#endif
}
static void *noise_suppress_create(obs_data_t *settings, obs_source_t *filter)
{
struct noise_suppress_data *ng =

View File

@ -28,8 +28,8 @@ extern struct obs_source_info async_delay_filter;
#if NOISEREDUCTION_ENABLED
extern struct obs_source_info noise_suppress_filter;
extern struct obs_source_info noise_suppress_filter_v2;
extern bool load_nvafx();
extern void release_lib();
extern bool load_nvafx(void);
extern void unload_nvafx(void);
#endif
extern struct obs_source_info invert_polarity_filter;
extern struct obs_source_info noise_gate_filter;
@ -79,6 +79,6 @@ bool obs_module_load(void)
#ifdef LIBNVAFX_ENABLED
void obs_module_unload(void)
{
release_lib();
unload_nvafx();
}
#endif