]> git.alsa-project.org Git - alsa-lib.git/commitdiff
topology: Define a free handler for the element
authorMengdong Lin <mengdong.lin@linux.intel.com>
Thu, 7 Apr 2016 07:29:01 +0000 (15:29 +0800)
committerTakashi Iwai <tiwai@suse.de>
Thu, 7 Apr 2016 14:57:21 +0000 (16:57 +0200)
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>
src/topology/elem.c
src/topology/tplg_local.h

index 00f9eeaff3d9f84901849e39acc9cbbc56fe3939..f2afaafd4cebec7b2499d0e2e9b2e5c3262e6b87 100644 (file)
@@ -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);
 }
index 4915b1a57a62899962ec1def19678822844be849..7368a8673bfdba9fd2fb801cee096877fe27111f 100644 (file)
@@ -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 {