aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-08-18 12:38:27 +0000
committerAndreas Monzner <andreas.monzner@multimedia-labs.de>2006-08-18 12:38:27 +0000
commitbb77d424f7eff49ba5be67cdb9c365fa2e305b8f (patch)
tree4987b3f6485e96e2221185eb3126670b46dc8a46
parent746dab83a3ababa568a9185967e189032a638b97 (diff)
downloadenigma2-bb77d424f7eff49ba5be67cdb9c365fa2e305b8f.tar.gz
enigma2-bb77d424f7eff49ba5be67cdb9c365fa2e305b8f.zip
speedups
-rw-r--r--lib/service/servicedvb.cpp9
-rw-r--r--lib/service/servicedvb.h7
2 files changed, 12 insertions, 4 deletions
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 4942324b..f175b07e 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -312,6 +312,9 @@ eServiceFactoryDVB::eServiceFactoryDVB()
eServiceCenter::getPrivInstance(sc);
if (sc)
sc->addServiceFactory(eServiceFactoryDVB::id, this);
+
+ m_StaticServiceDVBInfo = new eStaticServiceDVBInformation;
+ m_StaticServiceDVBBouquetInfo = new eStaticServiceDVBBouquetInformation;
}
eServiceFactoryDVB::~eServiceFactoryDVB()
@@ -584,9 +587,9 @@ RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr<iStaticServic
if ((ref.flags & eServiceReference::flagDirectory) == eServiceReference::flagDirectory) // bouquet
{
if ( !ref.name.empty() ) // satellites or providers list
- ptr = new eStaticServiceDVBInformation;
+ ptr = m_StaticServiceDVBInfo;
else // a dvb bouquet
- ptr = new eStaticServiceDVBBouquetInformation;
+ ptr = m_StaticServiceDVBBouquetInfo;
}
else if (!ref.path.empty()) /* do we have a PVR service? */
ptr = new eStaticServiceDVBPVRInformation(ref);
@@ -594,7 +597,7 @@ RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr<iStaticServic
{
ePtr<eDVBService> service;
if (lookupService(service, ref)) // no eDVBService avail for this reference ( Linkage Services... )
- ptr = new eStaticServiceDVBInformation;
+ ptr = m_StaticServiceDVBInfo;
else
/* eDVBService has the iStaticServiceInformation interface, so we pass it here. */
ptr = service;
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index 0be174e2..b2306e10 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -10,9 +10,14 @@
#include <lib/dvb/radiotext.h>
#include <lib/base/filepush.h>
+class eStaticServiceDVBInformation;
+class eStaticServiceDVBBouquetInformation;
+
class eServiceFactoryDVB: public iServiceHandler
{
-DECLARE_REF(eServiceFactoryDVB);
+ DECLARE_REF(eServiceFactoryDVB);
+ ePtr<eStaticServiceDVBInformation> m_StaticServiceDVBInfo;
+ ePtr<eStaticServiceDVBBouquetInformation> m_StaticServiceDVBBouquetInfo;
public:
eServiceFactoryDVB();
virtual ~eServiceFactoryDVB();