aboutsummaryrefslogtreecommitdiff
path: root/lib/service
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-21 20:17:09 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-11-21 20:17:09 +0000
commit265fb595e8767536096985bcfca7d0c36e61b5a0 (patch)
tree98c09d74ea8c49f1e4b86e2168068be5c8940af7 /lib/service
parent5824a5dd33390117c70ff1cdfdf76afaaaac71ac (diff)
downloadenigma2-265fb595e8767536096985bcfca7d0c36e61b5a0.tar.gz
enigma2-265fb595e8767536096985bcfca7d0c36e61b5a0.zip
small servicelist speedup
Diffstat (limited to 'lib/service')
-rw-r--r--lib/service/listboxservice.cpp26
-rw-r--r--lib/service/listboxservice.h1
-rw-r--r--lib/service/servicedvb.cpp7
-rw-r--r--lib/service/servicedvb.h7
4 files changed, 21 insertions, 20 deletions
diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp
index 32b9007f..f5145074 100644
--- a/lib/service/listboxservice.cpp
+++ b/lib/service/listboxservice.cpp
@@ -51,12 +51,10 @@ void eListboxServiceContent::setRoot(const eServiceReference &root, bool justSet
return;
assert(m_service_center);
- ePtr<iListableService> lst;
- if (m_service_center->list(m_root, lst))
+ if (m_service_center->list(m_root, m_lst))
eDebug("no list available!");
- else
- if (lst->getContent(m_list))
- eDebug("getContent failed");
+ else if (m_lst->getContent(m_list))
+ eDebug("getContent failed");
FillFinished();
}
@@ -227,10 +225,11 @@ void eListboxServiceContent::setPixmap(int type, ePtr<gPixmap> &pic)
void eListboxServiceContent::sort()
{
- ePtr<iListableService> lst;
- if (!m_service_center->list(m_root, lst))
+ if (!m_lst)
+ m_service_center->list(m_root, m_lst);
+ if (m_lst)
{
- m_list.sort(iListableServiceCompare(lst));
+ m_list.sort(iListableServiceCompare(m_lst));
/* FIXME: is this really required or can we somehow keep the current entry? */
cursorHome();
if (m_listbox)
@@ -304,13 +303,12 @@ int eListboxServiceContent::setCurrentMarked(bool state)
m_listbox->entryChanged(m_cursor_number);
if (!state)
{
- ePtr<iListableService> lst;
- if (m_service_center->list(m_root, lst))
- eDebug("no list available!");
- else
+ if (!m_lst)
+ m_service_center->list(m_root, m_lst);
+ if (m_lst)
{
ePtr<iMutableServiceList> list;
- if (lst->startEdit(list))
+ if (m_lst->startEdit(list))
eDebug("no editable list");
else
{
@@ -329,6 +327,8 @@ int eListboxServiceContent::setCurrentMarked(bool state)
}
}
}
+ else
+ eDebug("no list available!");
}
}
diff --git a/lib/service/listboxservice.h b/lib/service/listboxservice.h
index 59d4d920..8623336f 100644
--- a/lib/service/listboxservice.h
+++ b/lib/service/listboxservice.h
@@ -106,6 +106,7 @@ private:
eSize m_itemsize;
ePtr<iServiceHandler> m_service_center;
+ ePtr<iListableService> m_lst;
eServiceReference m_root;
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index d5167952..71c2ae60 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -382,7 +382,7 @@ RESULT eDVBServiceList::getContent(std::list<eServiceReference> &list, bool sort
if (!m_query)
return -1;
-
+
while (!m_query->getNextResult(ref))
list.push_back(ref);
@@ -489,11 +489,6 @@ RESULT eDVBServiceList::getNext(eServiceReference &ref)
return m_query->getNextResult((eServiceReferenceDVB&)ref);
}
-int eDVBServiceList::compareLessEqual(const eServiceReference &a, const eServiceReference &b)
-{
- return m_query->compareLessEqual((const eServiceReferenceDVB&)a, (const eServiceReferenceDVB&)b);
-}
-
RESULT eDVBServiceList::startEdit(ePtr<iMutableServiceList> &res)
{
if (m_parent.flags & eServiceReference::flagDirectory) // bouquet
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index 5e0cf0b4..27f48b57 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -44,7 +44,7 @@ public:
PyObject *getContent(const char* formatstr, bool sorted=false);
RESULT getContent(std::list<eServiceReference> &list, bool sorted=false);
RESULT getNext(eServiceReference &ptr);
- int compareLessEqual(const eServiceReference &a, const eServiceReference &b);
+ inline int compareLessEqual(const eServiceReference &a, const eServiceReference &b);
RESULT startEdit(ePtr<iMutableServiceList> &);
RESULT flushChanges();
@@ -63,6 +63,11 @@ private:
eBouquet *m_bouquet;
};
+inline int eDVBServiceList::compareLessEqual(const eServiceReference &a, const eServiceReference &b)
+{
+ return m_query->compareLessEqual((const eServiceReferenceDVB&)a, (const eServiceReferenceDVB&)b);
+}
+
class eDVBServiceBase: public iFrontendInformation
{
protected: