diff options
author | Mengdong Lin <mengdong.lin@linux.intel.com> | 2016-04-07 15:29:01 +0800 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2016-04-07 16:57:21 +0200 |
commit | 6b31bf8edb407f4c184576909f40c41bdc8439e4 (patch) | |
tree | 7254bbe4c4e2f517b9ac18db956dfa3f093178c8 /src/topology | |
parent | 374c5fa9c5cb80efa41ef8a3afd215aa48b48436 (diff) | |
download | alsa-lib-6b31bf8edb407f4c184576909f40c41bdc8439e4.tar.gz |
topology: Define a free handler for the element
This handler is defined for type-specific destruction of an element.
Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'src/topology')
-rw-r--r-- | src/topology/elem.c | 6 | ||||
-rw-r--r-- | src/topology/tplg_local.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/topology/elem.c b/src/topology/elem.c index 00f9eeaf..f2afaafd 100644 --- a/src/topology/elem.c +++ b/src/topology/elem.c @@ -83,8 +83,12 @@ void tplg_elem_free(struct tplg_elem *elem) /* free struct snd_tplg_ object, * the union pointers share the same address */ - if (elem->obj) + if (elem->obj) { + if (elem->free) + elem->free(elem->obj); + free(elem->obj); + } free(elem); } diff --git a/src/topology/tplg_local.h b/src/topology/tplg_local.h index 4915b1a5..7368a867 100644 --- a/src/topology/tplg_local.h +++ b/src/topology/tplg_local.h @@ -127,6 +127,8 @@ struct tplg_elem { */ struct list_head ref_list; struct list_head list; /* list of all elements with same type */ + + void (*free)(void *obj); }; struct map_elem { |