aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2006-07-25 00:02:23 +0000
committerFelix Domke <tmbinc@elitedvb.net>2006-07-25 00:02:23 +0000
commit3e67da39c881d9afc392162d802bc2ea4b0ec337 (patch)
tree8b27f9689f0f953c876ed3ed6e6b99060be36c90
parent9bcc599fba7204b53fc24f2ce7357fe0a85f0dc4 (diff)
downloadenigma2-3e67da39c881d9afc392162d802bc2ea4b0ec337.tar.gz
enigma2-3e67da39c881d9afc392162d802bc2ea4b0ec337.zip
try to reuse available converter
-rw-r--r--skin.py19
1 files changed, 16 insertions, 3 deletions
diff --git a/skin.py b/skin.py
index 1aced44c..f13ec9ca 100644
--- a/skin.py
+++ b/skin.py
@@ -5,6 +5,8 @@ from Tools.Import import my_import
import os
from Components.config import ConfigSubsection, configElement, configText, config
+from Components.Element import Element
+from Components.Converter.Converter import Converter
from Tools.XMLTools import elementsWithTag, mergeText
@@ -336,11 +338,22 @@ def readSkin(screen, skin, name, desktop):
for converter in elementsWithTag(widget.childNodes, "convert"):
ctype = converter.getAttribute('type')
assert ctype, "'convert'-tag needs a 'type'-attribute"
- converter_class = my_import('.'.join(["Components", "Converter", ctype])).__dict__.get(ctype)
parms = mergeText(converter.childNodes).strip()
- c = converter_class(parms)
+ converter_class = my_import('.'.join(["Components", "Converter", ctype])).__dict__.get(ctype)
- c.connect(source)
+ c = None
+
+ for i in source.downstream_elements:
+ if isinstance(i, converter_class) and i.converter_arguments == parms:
+ c = i
+
+ if c is None:
+ print "allocating new converter!"
+ c = converter_class(parms)
+ c.connect(source)
+ else:
+ print "reused conveter!"
+
source = c
renderer_class = my_import('.'.join(["Components", "Renderer", wrender])).__dict__.get(wrender)