summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY2
-rw-r--r--HISTORY.DE2
-rw-r--r--epgsearchcfg.h8
-rw-r--r--epgsearchtools.c75
-rw-r--r--epgsearchtools.h16
-rw-r--r--menu_favorites.c2
-rw-r--r--menu_searchresults.c29
-rw-r--r--menu_whatson.c4
8 files changed, 64 insertions, 74 deletions
diff --git a/HISTORY b/HISTORY
index 66147f8..bffba87 100644
--- a/HISTORY
+++ b/HISTORY
@@ -44,6 +44,8 @@ new:
- new patch vdr.epgsearch-exttimeredit.diff:
this patch against VDR integrates epgsearch's timer edit menu to VDR's timer menu, thanks
S:oren@vdr-portal for providing it.
+- some speed enhancements, thanks to Tobias Bratfisch for providing patches
+
fixes:
- fixed a crash when pressing 'Ok' in an empty timers done menu
- fixed a crash when using the progressbar and events with 0 duration exist, thanks
diff --git a/HISTORY.DE b/HISTORY.DE
index a97b79e..938ff21 100644
--- a/HISTORY.DE
+++ b/HISTORY.DE
@@ -49,6 +49,8 @@ neu:
- neuer Patch vdr.epgsearch-exttimeredit.diff:
Dieser VDR-Patch integriert epgsearch's Timer-Edit-Menü in VDR's Timer-Menü, Danke dafür
an S:oren@vdr-portal.
+- einige Geschwindigkeitsverbesserungen, Danke an Tobias Bratfisch für die Patches
+
fixes:
- Absturz beim Drücken von 'Ok' in leerem Menü erledigter Timer behoben
- Absturz bei Verwendung des Fortschrittsbalkens in Verbindung mit Sendungen
diff --git a/epgsearchcfg.h b/epgsearchcfg.h
index a466278..0b762ea 100644
--- a/epgsearchcfg.h
+++ b/epgsearchcfg.h
@@ -60,15 +60,15 @@ class cShowMode: public cListObject
else
sprintf(description, "%02d:%02d", iTime/100, iTime%100);
}
- char* GetDescription() { return description; }
- int GetTime() { return itime; }
- bool GetUsage() { return useIt; }
+ const char* GetDescription() { return description; }
+ int GetTime() const { return itime; }
+ bool GetUsage() const { return useIt; }
void SetDescription(const char* szD) { if (szD) strcpy(description, szD); }
void SetTime(int iT) { itime = iT; }
void SetUsage(bool bU) { useIt = bU; }
int Compare(const cListObject &ListObject) const;
- showMode GetMode() { return mode; }
+ showMode GetMode() const { return mode; }
};
diff --git a/epgsearchtools.c b/epgsearchtools.c
index 8021c12..89f820c 100644
--- a/epgsearchtools.c
+++ b/epgsearchtools.c
@@ -537,45 +537,6 @@ char *strreplacei(char *s, const char *s1, const char *s2)
return s;
}
-unsigned int strcharcount(char* source, char ch)
-{
- unsigned int count;
-
- for (count = 0; *source; source++)
- if (*source == ch)
- count++;
- return (count);
-}
-
-char *strreplaceall(char* source, char ch, const char* replacement)
-{
- int replen;
- int srclen;
- unsigned int chnum;
- register char *sptr, *nptr;
- char *newval;
-
- chnum = strcharcount(source, ch);
-
- if (chnum == 0)
- return (NULL);
-
- srclen = strlen(source);
- replen = strlen(replacement);
- newval = (char*) malloc(srclen + (chnum * replen) + 1);
- nptr = newval;
- for (sptr = source; chnum > 0; sptr++)
- if (*sptr == ch) {
- memcpy(nptr, replacement, replen);
- nptr += replen;
- chnum--;
- }
- else
- *nptr++ = *sptr;
- memcpy(nptr, sptr, srclen - (sptr - source) + 1);
- return (newval);
-}
-
void sleepMSec(long ms)
{
cCondWait::SleepMs(ms);
@@ -898,22 +859,26 @@ void DelTimer(int index)
char* FixSeparators(char* buffer, char sep)
{
- char tmp[5];
- sprintf(tmp, "%c\t", sep);
- buffer = strreplacei(buffer, tmp, "\t");
- sprintf(tmp, "%c \t", sep);
- buffer = strreplacei(buffer, tmp, "\t");
- sprintf(tmp, "%c ", sep);
- if (strstr(buffer, tmp) == buffer + strlen(buffer) - 2) buffer[strlen(buffer) - 2] = 0;
- if (buffer[strlen(buffer)-1] == sep) buffer[strlen(buffer) - 1] = 0;
-
- sprintf(tmp, "\t%c", sep);
- buffer = strreplacei(buffer, tmp, "\t");
- sprintf(tmp, "\t %c", sep);
- buffer = strreplacei(buffer, tmp, "\t");
- sprintf(tmp, "\t %c", sep);
- buffer = strreplacei(buffer, tmp, "\t");
- return buffer;
+ char tmp[5];
+ tmp[0] = sep; tmp[1] = '\t'; tmp[2] = '\0';
+ buffer = strreplacei(buffer, tmp, '\t');
+ tmp[0] = sep; tmp[1] = ' '; tmp[2] = '\t'; tmp[3] = '\0';
+ buffer = strreplacei(buffer, tmp, '\t');
+ tmp[0] = sep; tmp[1] = ' '; tmp[2] = '\0';
+
+ unsigned int len = strlen(buffer);
+ if (strstr(buffer, tmp) == buffer + len - 2)
+ buffer[len-2] = '\0';
+ if (buffer[len-1] == sep)
+ buffer[len-1] = '\0';
+
+ tmp[0] = '\t'; tmp[1] = sep; tmp[2] = '\0';
+ buffer = strreplacei(buffer, tmp, '\t');
+ tmp[0] = '\t'; tmp[1] = ' '; tmp[2] = sep; tmp[3] = '\0';
+ buffer = strreplacei(buffer, tmp, '\t');
+ tmp[0] = '\t'; tmp[1] = ' '; tmp[2] = ' '; tmp[3] = sep; tmp[4] = '\0';
+ buffer = strreplacei(buffer, tmp, '\t');
+ return buffer;
}
cString DateTime(time_t t)
diff --git a/epgsearchtools.h b/epgsearchtools.h
index b21b386..426156c 100644
--- a/epgsearchtools.h
+++ b/epgsearchtools.h
@@ -139,7 +139,21 @@ string UpdateAuxValue(string aux, string section, string value);
string UpdateAuxValue(string aux, string section, long num);
void ToLower(char* szText);
char *strreplacei(char *s, const char *s1, const char *s2);
-char *strreplaceall(char* source, char ch, const char* replacement);
+
+// replace s1 with s2 in s ignoring the case of s1
+inline char *strreplacei(char *s, const char *s1, const char s2)
+{
+ char *p = strcasestr(s, s1);
+ if (p) {
+ int offset = p - s;
+ int l = strlen(s);
+ int l1 = strlen(s1);
+ memmove(s + offset + 1, s + offset + l1, l - offset - l1 + 1);
+ s[offset] = s2;
+ }
+ return s;
+}
+
void sleepMSec(long ms);
void sleepSec(long s);
bool SendViaSVDRP(cString SVDRPcmd);
diff --git a/menu_favorites.c b/menu_favorites.c
index b0a923f..c4561d9 100644
--- a/menu_favorites.c
+++ b/menu_favorites.c
@@ -175,7 +175,7 @@ void cMenuFavorites::SetHelpKeys(bool Force)
{
showMode nextShowMode = cMenuWhatsOnSearch::GetNextMode();
cShowMode* mode = cMenuWhatsOnSearch::GetShowMode(nextShowMode);
- char* szButtonGreen = NULL;
+ const char* szButtonGreen = NULL;
if (mode)
szButtonGreen = mode->GetDescription();
diff --git a/menu_searchresults.c b/menu_searchresults.c
index c1aaaf7..2dfb2e1 100644
--- a/menu_searchresults.c
+++ b/menu_searchresults.c
@@ -85,9 +85,13 @@ bool cMenuSearchResultsItem::Update(bool Force)
{
if (!isUTF8)
{
- sprintf(t, "%c", event && hasMatch ? (timerMatch == tmFull) ? ((timer && timer->Recording())?ICON_REC:ICON_CLOCK) : ICON_CLOCK_HALF : ' ');
- sprintf(v, "%c", event && event->Vps() && (event->Vps() - event->StartTime()) ? ICON_VPS : ' ');
- sprintf(r, "%c", event && event->IsRunning() ? ICON_RUNNING : ' ');
+ t[0] = event && hasMatch ? (timerMatch == tmFull) ? ((timer && timer->Recording())?ICON_REC:ICON_CLOCK) : ICON_CLOCK_HALF : ' ';
+ t[1] = '\0';
+ v[0] = event && event->Vps() && (event->Vps() - event->StartTime()) ? ICON_VPS : ' ';
+ v[1] = '\0';
+ r[0] = event && event->IsRunning() ? ICON_RUNNING : ' ';
+ r[1] = '\0';
+
}
else
{
@@ -101,19 +105,22 @@ bool cMenuSearchResultsItem::Update(bool Force)
}
else
{
- sprintf(t, "%c", event && hasMatch ? (timerMatch == tmFull) ? ((timer && timer->Recording())?'R':'T') : 't' : ' ');
- sprintf(v, "%c", event && event->Vps() && (event->Vps() - event->StartTime()) ? 'V' : ' ');
- sprintf(r, "%c", event && event->IsRunning() ? '*' : ' ');
+ t[0] = event && hasMatch ? (timerMatch == tmFull) ? ((timer && timer->Recording())?'R':'T') : 't' : ' ';
+ t[1] = '\0';
+ v[0] = event && event->Vps() && (event->Vps() - event->StartTime()) ? 'V' : ' ';
+ v[1] = '\0';
+ r[0] = event && event->IsRunning() ? '*' : ' ';
+ r[1] = '\0';
}
if (t[0] != 'T' && previewTimer)
t[0] = 'P';
- sprintf(szStatus, "%s%s%s", t,v,r);
+ strcpy(szStatus, t);
+ strcat(szStatus, v);
+ strcat(szStatus, r);
char* buffer = strdup(menuTemplate->MenuTemplate());
- char* tmp = strreplaceall(buffer, '|', "\t");
- free(buffer);
- buffer = tmp;
+ strreplace(buffer, '|', '\t');
if (!strcasestr(buffer, "%subtitle%") && cTemplFile::GetTemplateByName("MenuFavorites") != menuTemplate)
// make sure, there is a subtitle
@@ -123,7 +130,7 @@ bool cMenuSearchResultsItem::Update(bool Force)
// parse the epxression and evaluate it
cVarExpr varExpr(buffer);
- tmp = strdup(varExpr.Evaluate(event).c_str());
+ char* tmp = strdup(varExpr.Evaluate(event).c_str());
free(buffer);
buffer = tmp;
diff --git a/menu_whatson.c b/menu_whatson.c
index 9becb4a..cecf205 100644
--- a/menu_whatson.c
+++ b/menu_whatson.c
@@ -210,7 +210,7 @@ bool cMenuMyScheduleItem::Update(bool Force)
if (channel)
{
char szChannelNr[6] = "";
- sprintf(szChannelNr, "%d", channel->Number());
+ snprintf(szChannelNr, 6, "%d", channel->Number());
buffer = strreplacei(buffer, "%chnr%", szChannelNr);
buffer = strreplacei(buffer, "%chsh%", channel->ShortName(true));
buffer = strreplacei(buffer, "%chlng%", channel->Name());
@@ -659,7 +659,7 @@ void cMenuWhatsOnSearch::SetHelpKeys(bool Force)
{
showMode nextShowMode = GetNextMode();
cShowMode* mode = GetShowMode(nextShowMode);
- char* szButtonGreen = NULL;
+ const char* szButtonGreen = NULL;
if (mode)
szButtonGreen = mode->GetDescription();
if (toggleKeys==0)