From 6d1eb880c238dba0b71c820a4bfca673ddfa4625 Mon Sep 17 00:00:00 2001 From: George Joseph Date: Mon, 13 Mar 2017 09:45:47 -0600 Subject: [PATCH] menuselect: Add a new 'options' support type The Binaural Rendering patches in the master branch required menuselect to be updated with a new support type called 'option'. This allows binaural rendering to be turned on or off when bridge_softmix is built. This patch backports the 'option' functionality to the 13 and 14 branches. Here's what it looks like in menuselect: [*] bridge_simple [*] bridge_softmix --- Module Options --- [ ] binaural_rendering_in_bridge_softmix To create an option for a module, you can create (or update) the menuselect-tree xml snippet in the directory where the module resides and add a member element with an 'option' support_level. Example (abbreviated) from bridges/bridges.xml: option bridge_softmix fftw3 no The 'name' will be added or removed from the MENUSELECT_ make variable following the standard module "missing means yes" rules. Example (abbreviated) from bridges/Makefile: ifeq ($(findstring binaural_rendering,$(MENUSELECT_BRIDGES)),) bridge_softmix.o: _ASTCFLAGS+=-DBINAURAL_RENDERING bridge_softmix.so: LIBS+=$(FFTW3_LIB) endif Change-Id: I66d23755ed6e81f8d439cad410f2ffa7c30f25ad --- menuselect/menuselect.c | 8 +++++++- menuselect/menuselect.h | 3 ++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/menuselect/menuselect.c b/menuselect/menuselect.c index da972d8b12..689cebf624 100644 --- a/menuselect/menuselect.c +++ b/menuselect/menuselect.c @@ -238,6 +238,10 @@ static enum support_level_values string_to_support_level(const char *support_lev return SUPPORT_EXTERNAL; } + if (!strcasecmp(support_level, "option")) { + return SUPPORT_OPTION; + } + return SUPPORT_UNSPECIFIED; } @@ -253,6 +257,8 @@ static const char *support_level_to_string(enum support_level_values support_lev return "Deprecated"; case SUPPORT_EXTERNAL: return "External"; + case SUPPORT_OPTION: + return "Module Options"; default: return "Unspecified"; } @@ -461,7 +467,7 @@ static int process_xml_member_node(xmlNode *node, struct category *cat) process_process_xml_category_child_node(cur, mem); } - if (!cat->positive_output) { + if (!cat->positive_output && strcasecmp(mem->support_level, "option")) { mem->enabled = 1; if (!mem->defaultenabled || strcasecmp(mem->defaultenabled, "no")) { mem->was_enabled = 1; diff --git a/menuselect/menuselect.h b/menuselect/menuselect.h index bf2bf4c4fe..78ae8eff6d 100644 --- a/menuselect/menuselect.h +++ b/menuselect/menuselect.h @@ -108,7 +108,8 @@ enum support_level_values { SUPPORT_DEPRECATED = 2, SUPPORT_UNSPECIFIED = 3, SUPPORT_EXTERNAL = 4, - SUPPORT_COUNT = 5, /* Keep this item at the end of the list. Tracks total number of support levels. */ + SUPPORT_OPTION = 5, + SUPPORT_COUNT = 6, /* Keep this item at the end of the list. Tracks total number of support levels. */ }; AST_LIST_HEAD_NOLOCK(support_level_bucket, member);