mirror of
				https://github.com/alsa-project/alsa-lib.git
				synced 2025-11-03 09:01:52 -05:00 
			
		
		
		
	Add missing snd_dlclose() in pcm_meter.c
Added the missing snd_dlclose() in snd_pcm_meter_close().
This commit is contained in:
		
							parent
							
								
									9123203f8d
								
							
						
					
					
						commit
						fc7bd60f0d
					
				
					 1 changed files with 13 additions and 1 deletions
				
			
		| 
						 | 
					@ -67,6 +67,7 @@ typedef struct _snd_pcm_meter {
 | 
				
			||||||
	pthread_mutex_t running_mutex;
 | 
						pthread_mutex_t running_mutex;
 | 
				
			||||||
	pthread_cond_t running_cond;
 | 
						pthread_cond_t running_cond;
 | 
				
			||||||
	struct timespec delay;
 | 
						struct timespec delay;
 | 
				
			||||||
 | 
						void *dl_handle;
 | 
				
			||||||
} snd_pcm_meter_t;
 | 
					} snd_pcm_meter_t;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void snd_pcm_meter_add_frames(snd_pcm_t *pcm,
 | 
					static void snd_pcm_meter_add_frames(snd_pcm_t *pcm,
 | 
				
			||||||
| 
						 | 
					@ -277,6 +278,8 @@ static int snd_pcm_meter_close(snd_pcm_t *pcm)
 | 
				
			||||||
		scope = list_entry(pos, snd_pcm_scope_t, list);
 | 
							scope = list_entry(pos, snd_pcm_scope_t, list);
 | 
				
			||||||
		snd_pcm_scope_remove(scope);
 | 
							snd_pcm_scope_remove(scope);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
						if (meter->dl_handle)
 | 
				
			||||||
 | 
							snd_dlclose(meter->dl_handle);
 | 
				
			||||||
	free(meter);
 | 
						free(meter);
 | 
				
			||||||
	return err;
 | 
						return err;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -599,8 +602,10 @@ static int snd_pcm_meter_add_scope_conf(snd_pcm_t *pcm, const char *name,
 | 
				
			||||||
	snd_config_t *c, *type_conf;
 | 
						snd_config_t *c, *type_conf;
 | 
				
			||||||
	int (*open_func)(snd_pcm_t *, const char *,
 | 
						int (*open_func)(snd_pcm_t *, const char *,
 | 
				
			||||||
			 snd_config_t *, snd_config_t *) = NULL;
 | 
								 snd_config_t *, snd_config_t *) = NULL;
 | 
				
			||||||
 | 
						snd_pcm_meter_t *meter = pcm->private_data;
 | 
				
			||||||
	void *h;
 | 
						void *h;
 | 
				
			||||||
	int err;
 | 
						int err;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (snd_config_get_type(conf) != SND_CONFIG_TYPE_COMPOUND) {
 | 
						if (snd_config_get_type(conf) != SND_CONFIG_TYPE_COMPOUND) {
 | 
				
			||||||
		SNDERR("Invalid type for scope %s", str);
 | 
							SNDERR("Invalid type for scope %s", str);
 | 
				
			||||||
		err = -EINVAL;
 | 
							err = -EINVAL;
 | 
				
			||||||
| 
						 | 
					@ -669,7 +674,14 @@ static int snd_pcm_meter_add_scope_conf(snd_pcm_t *pcm, const char *name,
 | 
				
			||||||
       _err:
 | 
					       _err:
 | 
				
			||||||
	if (type_conf)
 | 
						if (type_conf)
 | 
				
			||||||
		snd_config_delete(type_conf);
 | 
							snd_config_delete(type_conf);
 | 
				
			||||||
	return err >= 0 ? open_func(pcm, name, root, conf) : err;
 | 
						if (! err) {
 | 
				
			||||||
 | 
							err = open_func(pcm, name, root, conf);
 | 
				
			||||||
 | 
							if (err < 0)
 | 
				
			||||||
 | 
								snd_dlclose(h);
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
								meter->dl_handle = h;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						return err;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*! \page pcm_plugins
 | 
					/*! \page pcm_plugins
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue