Re: [PATCH v3 6/6] pcm:plug: save converter config

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



ping

-----Original Message-----
From: Sutar, Mounesh 
Sent: 09 March 2017 15:51
To: patch@xxxxxxxxxxxxxxxx
Cc: alsa-devel@xxxxxxxxxxxxxxxx; Andreas Pape <apape@xxxxxxxxxxxxxx>; 'sutar.mounesh@xxxxxxxxx' <sutar.mounesh@xxxxxxxxx>
Subject: RE: [PATCH v3 6/6] pcm:plug: save converter config

ping

-----Original Message-----
From: sutar.mounesh@xxxxxxxxx [mailto:sutar.mounesh@xxxxxxxxx] 
Sent: 03 March 2017 15:28
To: patch@xxxxxxxxxxxxxxxx
Cc: alsa-devel@xxxxxxxxxxxxxxxx; Sutar, Mounesh <Mounesh_Sutar@xxxxxxxxxx>; Andreas Pape <apape@xxxxxxxxxxxxxx>; Mounesh Sutar <sutar.mounesh@xxxxxxxxx>
Subject: [PATCH v3 6/6] pcm:plug: save converter config

From: Andreas Pape <apape@xxxxxxxxxxxxxx>

Passed config is freed after call to open, thus it is invalid when trying to extract the converter name. So config entry is saved for later usage.

Signed-off-by: Andreas Pape <apape@xxxxxxxxxxxxxx>
Signed-off-by: Mounesh Sutar <sutar.mounesh@xxxxxxxxx>

diff --git a/src/pcm/pcm_plug.c b/src/pcm/pcm_plug.c index 266707b..c643278 100644
--- a/src/pcm/pcm_plug.c
+++ b/src/pcm/pcm_plug.c
@@ -64,6 +64,10 @@ static int snd_pcm_plug_close(snd_pcm_t *pcm)
 	snd_pcm_plug_t *plug = pcm->private_data;
 	int err, result = 0;
 	free(plug->ttable);
+	if (plug->rate_converter) {
+		snd_config_delete((snd_config_t*)plug->rate_converter);
+		plug->rate_converter = NULL;
+	}
 	assert(plug->gen.slave == plug->req_slave);
 	if (plug->gen.close_slave) {
 		snd_pcm_unlink_hw_ptr(pcm, plug->req_slave); @@ -1108,7 +1112,14 @@ int snd_pcm_plug_open(snd_pcm_t **pcmp,
 	plug->sformat = sformat;
 	plug->schannels = schannels;
 	plug->srate = srate;
-	plug->rate_converter = rate_converter;
+	if (rate_converter) {
+		if ((err = snd_config_copy((snd_config_t**)&plug->rate_converter,
+					   (snd_config_t *)rate_converter)) < 0) {
+			free(plug);
+			return err;
+		}
+	}
+
 	plug->gen.slave = plug->req_slave = slave;
 	plug->gen.close_slave = close_slave;
 	plug->route_policy = route_policy;
@@ -1119,6 +1130,10 @@ int snd_pcm_plug_open(snd_pcm_t **pcmp,
 	
 	err = snd_pcm_new(&pcm, SND_PCM_TYPE_PLUG, name, slave->stream, slave->mode);
 	if (err < 0) {
+		if (plug->rate_converter) {
+			snd_config_delete((snd_config_t*)plug->rate_converter);
+			plug->rate_converter = NULL;
+		}
 		free(plug);
 		return err;
 	}
--
2.7.4

_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux