diff options
author | louis <louis.braun@gmx.de> | 2014-11-01 16:02:56 +0100 |
---|---|---|
committer | louis <louis.braun@gmx.de> | 2014-11-01 16:02:56 +0100 |
commit | f478ad10bbac192819c98a2edab464fb6347d5e9 (patch) | |
tree | a43030718608e5c21541ce8667f66c3e4c25ac86 /libtemplate/templatefunction.c | |
parent | f9f68cae8d64f5c60ffaa34118b66f5ebab28506 (diff) | |
download | vdr-plugin-skindesigner-f478ad10bbac192819c98a2edab464fb6347d5e9.tar.gz vdr-plugin-skindesigner-f478ad10bbac192819c98a2edab464fb6347d5e9.tar.bz2 |
optimized performance when creating a menu list
Diffstat (limited to 'libtemplate/templatefunction.c')
-rw-r--r-- | libtemplate/templatefunction.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/libtemplate/templatefunction.c b/libtemplate/templatefunction.c index df3e653..699e872 100644 --- a/libtemplate/templatefunction.c +++ b/libtemplate/templatefunction.c @@ -272,6 +272,36 @@ bool cTemplateFunction::CalculateParameters(void) { return paramsValid;
}
+bool cTemplateFunction::ReCalculateParameters(void) {
+ bool paramValid = true;
+ bool paramsValid = true;
+ for (map< eParamType, string >::iterator param = nativeParameters.begin(); param != nativeParameters.end(); param++) {
+ paramValid = true;
+ eParamType type = param->first;
+ string value = param->second;
+ switch (type) {
+ case ptX:
+ case ptY:
+ case ptWidth:
+ case ptHeight:
+ case ptMenuItemWidth:
+ case ptFontSize:
+ case ptFloatWidth:
+ case ptFloatHeight:
+ case ptMaxLines:
+ case ptColumnWidth:
+ case ptRowHeight:
+ SetNumericParameter(type, value);
+ break;
+ }
+ if (!paramValid) {
+ paramsValid = false;
+ esyslog("skindesigner: %s: invalid parameter %d, value %s", GetFuncName().c_str(), type, value.c_str());
+ }
+ }
+ return paramsValid;
+}
+
void cTemplateFunction::CompleteParameters(void) {
switch (type) {
case ftDrawImage: {
@@ -733,8 +763,11 @@ bool cTemplateFunction::SetNumericParameter(eParamType type, string value) { if (this->type < ftLoop && type == ptY) {
val += containerY;
}
+ numericParameters.erase(type);
+ numericDynamicParameters.erase(type);
numericParameters.insert(pair<eParamType, int>(type, val));
} else {
+ numericDynamicParameters.erase(type);
numericDynamicParameters.insert(pair<eParamType, string>(type, parsedValue));
}
return param.Valid();
|