From 6cdf258fe1e81a5714aade786d3a6421202bf0b2 Mon Sep 17 00:00:00 2001 From: ghost Date: Sun, 21 Dec 2008 11:33:09 +0100 Subject: [PATCH] small speedups (thx to pieterg) --- lib/dvb/epgcache.cpp | 70 ++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/lib/dvb/epgcache.cpp b/lib/dvb/epgcache.cpp index dbb695bd..9bb8dfc6 100644 --- a/lib/dvb/epgcache.cpp +++ b/lib/dvb/epgcache.cpp @@ -2047,6 +2047,8 @@ PyObject *eEPGCache::search(ePyObject arg) int querytype=-1; bool needServiceEvent=false; int maxmatches=0; + int must_get_service_name = 0; + bool must_get_service_reference = false; if (PyTuple_Check(arg)) { @@ -2065,6 +2067,16 @@ PyObject *eEPGCache::search(ePyObject arg) case 'E': case 'T': needServiceEvent=true; + break; + case 'N': + must_get_service_name = 1; + break; + case 'n': + must_get_service_name = 2; + break; + case 'R': + must_get_service_reference = true; + break; default: break; } @@ -2159,9 +2171,7 @@ PyObject *eEPGCache::search(ePyObject arg) int title_len = data[5]; if ( querytype == 1 ) { - if (title_len > textlen) - continue; - else if (title_len < textlen) + if (title_len != textlen) continue; if ( casetype ) { @@ -2303,44 +2313,40 @@ PyObject *eEPGCache::search(ePyObject arg) } } // create service name - if (!service_name) + if (must_get_service_name && !service_name) { - int must_get_service_name = strchr(argstring, 'N') ? 1 : strchr(argstring, 'n') ? 2 : 0; - if (must_get_service_name) + ePtr sptr; + eServiceCenterPtr service_center; + eServiceCenter::getPrivInstance(service_center); + if (service_center) { - ePtr sptr; - eServiceCenterPtr service_center; - eServiceCenter::getPrivInstance(service_center); - if (service_center) + service_center->info(ref, sptr); + if (sptr) { - service_center->info(ref, sptr); - if (sptr) - { - std::string name; - sptr->getName(ref, name); + std::string name; + sptr->getName(ref, name); - if (must_get_service_name == 1) - { - size_t pos; - // filter short name brakets - while((pos = name.find("\xc2\x86")) != std::string::npos) - name.erase(pos,2); - while((pos = name.find("\xc2\x87")) != std::string::npos) - name.erase(pos,2); - } - else - name = buildShortName(name); - - if (name.length()) - service_name = PyString_FromString(name.c_str()); + if (must_get_service_name == 1) + { + size_t pos; + // filter short name brakets + while((pos = name.find("\xc2\x86")) != std::string::npos) + name.erase(pos,2); + while((pos = name.find("\xc2\x87")) != std::string::npos) + name.erase(pos,2); } + else + name = buildShortName(name); + + if (name.length()) + service_name = PyString_FromString(name.c_str()); } - if (!service_name) - service_name = PyString_FromString(""); } + if (!service_name) + service_name = PyString_FromString(""); } // create servicereference string - if (!service_reference && strchr(argstring,'R')) + if (must_get_service_reference && !service_reference) service_reference = PyString_FromString(ref.toString().c_str()); // create list if (!ret) -- 2.30.2