Compare commits
4 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2fe9da95bc | ||
|
|
83c82f1247 | ||
|
|
d37848509b | ||
|
|
7421fb5e04 |
3 changed files with 32 additions and 390 deletions
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (vdr-live-3.1.8.tar.gz) = 1f89e1b782ea258726e3cf6cf236a029937ba5df10ce04b6142084afd0912d5513efe601e9a82bd69a5fd5355d23036b90d0399bac616aed666ac00c062d5c9d
|
||||
SHA512 (vdr-live-3.1.11.tar.gz) = f9b0bf16708fb21959bbefcd3d8d28f765670b1a10540cf3187a8a3506b5ad259830f1841c7cfd5fa050ae927c24003b70ac8aee98cdd2fa83fd22b390227489
|
||||
|
|
|
|||
|
|
@ -3,18 +3,15 @@
|
|||
%global shortcommit0 %(c=%{commit0}; echo ${c:0:7})
|
||||
%global gitdate 20211228
|
||||
# version we want build against
|
||||
%global vdr_version 2.4.0
|
||||
%if 0%{?fedora} >= 36
|
||||
%global vdr_version 2.6.1
|
||||
%endif
|
||||
%if 0%{?fedora} == 35
|
||||
%global vdr_version 2.4.7
|
||||
%if 0%{?fedora} >= 38
|
||||
%global vdr_version 2.6.3
|
||||
%endif
|
||||
|
||||
Name: vdr-live
|
||||
Version: 3.1.8
|
||||
Version: 3.1.11
|
||||
#Release: 0.4.%%{gitdate}git%%{shortcommit0}%%{?dist}
|
||||
Release: 1%{?dist}
|
||||
Release: 3%{?dist}
|
||||
Summary: An interactive web interface with HTML5 live stream support for VDR
|
||||
|
||||
# The entire source code is GPLv2+ except live/js/mootools/ which is MIT
|
||||
|
|
@ -64,11 +61,7 @@ rm -rf httpd
|
|||
iconv -f iso-8859-1 -t utf-8 README > README.utf8 ; mv README.utf8 README
|
||||
|
||||
%build
|
||||
%if 0%{?fedora} > 35
|
||||
%make_build CFLAGS="%{optflags} -fPIC" CXXFLAGS="%{optflags} -fPIC"
|
||||
%else
|
||||
%make_build CFLAGS="%{optflags} -fPIC" CXXFLAGS="%{optflags} -std=gnu++11 -fPIC"
|
||||
%endif
|
||||
|
||||
%install
|
||||
%make_install
|
||||
|
|
@ -89,6 +82,33 @@ install -Dpm 644 %{SOURCE1} \
|
|||
%{vdr_resdir}/plugins/live/
|
||||
|
||||
%changelog
|
||||
* Tue Jan 24 2023 Martin Gansser <martinkg@fedoraproject.org> - 3.1.11-3
|
||||
- Rebuilt
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 3.1.11-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Wed Jan 18 2023 Martin Gansser <martinkg@fedoraproject.org> - 3.1.11-1
|
||||
- Update to 3.1.11
|
||||
|
||||
* Fri Jan 06 2023 Martin Gansser <martinkg@fedoraproject.org> - 3.1.10-2
|
||||
- Rebuilt
|
||||
|
||||
* Mon Dec 26 2022 Martin Gansser <martinkg@fedoraproject.org> - 3.1.10-1
|
||||
- Update to 3.1.10
|
||||
|
||||
* Wed Dec 14 2022 Martin Gansser <martinkg@fedoraproject.org> - 3.1.9-3
|
||||
- Rebuilt for new VDR API version
|
||||
|
||||
* Thu Dec 01 2022 Martin Gansser <martinkg@fedoraproject.org> - 3.1.9-2
|
||||
- Rebuilt for new VDR API version
|
||||
|
||||
* Sun Nov 27 2022 Martin Gansser <martinkg@fedoraproject.org> - 3.1.9-1
|
||||
- Updatae to 3.1.9
|
||||
|
||||
* Thu Nov 17 2022 Martin Gansser <martinkg@fedoraproject.org> - 3.1.8-2
|
||||
- Rebuilt due undefined symbol: _ZN7vdrlive6cUsers14logged_in_userB5cxx11E
|
||||
|
||||
* Mon Oct 10 2022 Martin Gansser <martinkg@fedoraproject.org> - 3.1.8-1
|
||||
- Updatae to 3.1.8
|
||||
|
||||
|
|
|
|||
|
|
@ -1,378 +0,0 @@
|
|||
diff -Naur vdr-plugin-live-3.0.10/pages/searchresults.ecpp vdr-plugin-live-master/pages/searchresults.ecpp
|
||||
--- vdr-plugin-live-3.0.10/pages/searchresults.ecpp 2021-07-18 14:51:47.000000000 +0200
|
||||
+++ vdr-plugin-live-master/pages/searchresults.ecpp 2021-09-10 14:11:46.000000000 +0200
|
||||
@@ -62,53 +62,60 @@
|
||||
<%cpp>
|
||||
std::string current_day = "";
|
||||
|
||||
-#if VDRVERSNUM >= 20301
|
||||
- LOCK_CHANNELS_READ;
|
||||
-#endif
|
||||
for (SearchResults::iterator result = results.begin(); result != results.end(); ++result) {
|
||||
#if VDRVERSNUM >= 20301
|
||||
- cChannel* channel = (cChannel *)Channels->GetByChannelID(result->Channel());
|
||||
+ cStateKey StateKey;
|
||||
+ if (const cChannels *Channels = cChannels::GetChannelsRead(StateKey)) {
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: pages/searchresults.ecpp LOCK_CHANNELS_READ");
|
||||
+ #endif
|
||||
+ cChannel* channel = (cChannel *)Channels->GetByChannelID(result->Channel());
|
||||
#else
|
||||
cChannel* channel = Channels.GetByChannelID(result->Channel());
|
||||
#endif
|
||||
- if (!channel) continue;
|
||||
- std::string channelname = channel->Name();
|
||||
- int channelnr = channel->Number();
|
||||
- std::string start(result->StartTime() ? FormatDateTime(tr("%I:%M %p"), result->StartTime()) : "");
|
||||
- std::string end(result->StopTime() ? FormatDateTime(tr("%I:%M %p"), result->StopTime()) : "");
|
||||
- std::string day(result->StartTime() ? FormatDateTime(tr("%A, %b %d %Y"), result->StartTime()) : "");
|
||||
- std::string description = result->Description();
|
||||
- std::string epgid = EpgEvents::EncodeDomId(result->Channel(), result->EventId());
|
||||
+ if (!channel) {
|
||||
+ StateKey.Remove();
|
||||
+ continue;
|
||||
+ }
|
||||
+ std::string channelname = channel->Name();
|
||||
+ int channelnr = channel->Number();
|
||||
+ std::string start(result->StartTime() ? FormatDateTime(tr("%I:%M %p"), result->StartTime()) : "");
|
||||
+ std::string end(result->StopTime() ? FormatDateTime(tr("%I:%M %p"), result->StopTime()) : "");
|
||||
+ std::string day(result->StartTime() ? FormatDateTime(tr("%A, %b %d %Y"), result->StartTime()) : "");
|
||||
+ std::string description = result->Description();
|
||||
+ std::string epgid = EpgEvents::EncodeDomId(result->Channel(), result->EventId());
|
||||
|
||||
- bool truncated = false;
|
||||
+ bool truncated = false;
|
||||
|
||||
- bool bottom = false;
|
||||
- SearchResults::iterator nextResult = result; ++nextResult;
|
||||
- if (nextResult == results.end())
|
||||
- bottom = true;
|
||||
- else {
|
||||
- std::string nextDay(nextResult->StartTime() ? FormatDateTime(tr("%A, %b %d %Y"), nextResult->StartTime()) : "");
|
||||
- bottom = (day != nextDay);
|
||||
- }
|
||||
+ bool bottom = false;
|
||||
+ SearchResults::iterator nextResult = result; ++nextResult;
|
||||
+ if (nextResult == results.end())
|
||||
+ bottom = true;
|
||||
+ else {
|
||||
+ std::string nextDay(nextResult->StartTime() ? FormatDateTime(tr("%A, %b %d %Y"), nextResult->StartTime()) : "");
|
||||
+ bottom = (day != nextDay);
|
||||
+ }
|
||||
|
||||
- if (current_day != day) {
|
||||
- if (current_day != "") {
|
||||
+ if (current_day != day) {
|
||||
+ if (current_day != "") {
|
||||
</%cpp>
|
||||
- <tr class="spacer">
|
||||
- <td colspan="4"/>
|
||||
- </tr>
|
||||
+ <tr class="spacer">
|
||||
+ <td colspan="4"/>
|
||||
+ </tr>
|
||||
+% }
|
||||
+ <tr class="head">
|
||||
+ <td colspan="4"><div class="boxheader"><div><div><$ day $></div></div></div></td>
|
||||
+ </tr>
|
||||
+% current_day = day;
|
||||
% }
|
||||
- <tr class="head">
|
||||
- <td colspan="4"><div class="boxheader"><div><div><$ day $></div></div></div></td>
|
||||
- </tr>
|
||||
-% current_day = day;
|
||||
+% StateKey.Remove(); // release channels read lock before calling event_timer which make a timers read lock
|
||||
+ <tr>
|
||||
+ <td class="action leftcol <? bottom ? "bottomrow"?>"><& pageelems.event_timer epgid=(epgid) &></td>
|
||||
+ <td class="topaligned <? bottom ? "bottomrow"?>"><div class="withmargin"><a href="schedule.html?channel=<$ channelnr $>"><$ channelname $></a></div></td>
|
||||
+ <td class="topaligned <? bottom ? "bottomrow"?>"><div class="withmargin nowrap"><$ start $> - <$ end $></div></td>
|
||||
+ <td class="topaligned rightcol <? bottom ? "bottomrow"?>"><div class="more withmargin"><a <& tooltip.hint text=(StringEscapeAndBreak(StringWordTruncate(description, 300, truncated)) + "<br />" + tr("Click to view details.")) &><& tooltip.display domId=(epgid) &>><span class="title"><$ result->Title() $></span><br /><span class="short"><%cpp>if (result->ShortText().empty()) { </%cpp> <%cpp> } </%cpp><$ result->ShortText() $></span></a></div></td>
|
||||
+ </tr>
|
||||
% }
|
||||
- <tr>
|
||||
- <td class="action leftcol <? bottom ? "bottomrow"?>"><& pageelems.event_timer epgid=(epgid) &></td>
|
||||
- <td class="topaligned <? bottom ? "bottomrow"?>"><div class="withmargin"><a href="schedule.html?channel=<$ channelnr $>"><$ channelname $></a></div></td>
|
||||
- <td class="topaligned <? bottom ? "bottomrow"?>"><div class="withmargin nowrap"><$ start $> - <$ end $></div></td>
|
||||
- <td class="topaligned rightcol <? bottom ? "bottomrow"?>"><div class="more withmargin"><a <& tooltip.hint text=(StringEscapeAndBreak(StringWordTruncate(description, 300, truncated)) + "<br />" + tr("Click to view details.")) &><& tooltip.display domId=(epgid) &>><span class="title"><$ result->Title() $></span><br /><span class="short"><%cpp>if (result->ShortText().empty()) { </%cpp> <%cpp> } </%cpp><$ result->ShortText() $></span></a></div></td>
|
||||
- </tr>
|
||||
% }
|
||||
</table>
|
||||
</div>
|
||||
diff -Naur vdr-plugin-live-3.0.10/pages/timers.ecpp vdr-plugin-live-master/pages/timers.ecpp
|
||||
--- vdr-plugin-live-3.0.10/pages/timers.ecpp 2021-07-18 14:51:47.000000000 +0200
|
||||
+++ vdr-plugin-live-master/pages/timers.ecpp 2021-09-10 14:11:46.000000000 +0200
|
||||
@@ -37,7 +37,7 @@
|
||||
timer = 0;
|
||||
if ( !timerid.empty() ) {
|
||||
std::string tId = SortedTimers::DecodeDomId(timerid);
|
||||
- // dsyslog("live: DEBUG: TIMER: tId = %s", tId.c_str());
|
||||
+// dsyslog("live: DEBUG: TIMER: tId = %s", tId.c_str());
|
||||
timer = timers.GetByTimerId(tId);
|
||||
if ( timer == 0 )
|
||||
throw HtmlError( tr("Couldn't find timer. Maybe you mistyped your request?") );
|
||||
@@ -70,25 +70,26 @@
|
||||
<& pageelems.logo &>
|
||||
<& menu active=("timers") component=("timers.timer_actions")>
|
||||
<div class="inhalt">
|
||||
-% if (timers.size() == 0) {
|
||||
+<%cpp>
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: pages/timers.ecpp LOCK_TIMERS_READ");
|
||||
+ #endif
|
||||
+ LOCK_TIMERS_READ;
|
||||
+ cSortedTimers sortedTimers(Timers);
|
||||
+ if (sortedTimers.Size() == 0) {
|
||||
+</%cpp>
|
||||
<$ tr("No timer defined") $>
|
||||
% } else {
|
||||
<table class="listing" cellspacing="0" cellpadding="0">
|
||||
<%cpp>
|
||||
// output of the timer list:
|
||||
- for (SortedTimers::iterator timer = timers.begin(); timer != timers.end(); ++timer) {
|
||||
- EpgInfoPtr epgEvent;
|
||||
+ for (int i = 0; i < sortedTimers.Size(); i++) {
|
||||
+ const cTimer *timer = sortedTimers[i];
|
||||
+ EpgInfoPtr epgEvent;
|
||||
std::string longDescription;
|
||||
std::string searchTimName;
|
||||
std::string searchTimId;
|
||||
-#if VDRVERSNUM >= 20301
|
||||
- if (!timer->Event()) {
|
||||
- LOCK_SCHEDULES_READ;
|
||||
- timer->SetEventFromSchedule(Schedules);
|
||||
- }
|
||||
-#else
|
||||
- if (!timer->Event()) timer->SetEventFromSchedule();
|
||||
-#endif
|
||||
+
|
||||
if (timer->Event())
|
||||
{
|
||||
epgEvent = EpgEvents::CreateEpgInfo(timer->Channel(), timer->Event());
|
||||
@@ -98,13 +99,13 @@
|
||||
searchTimName = SortedTimers::SearchTimerInfo(*timer, "searchtimer");
|
||||
searchTimId = SortedTimers::SearchTimerInfo(*timer, "s-id");
|
||||
}
|
||||
- std::string currentDay = SortedTimers::GetTimerDays(*timer);
|
||||
- SortedTimers::iterator nextTimer = timer; ++nextTimer;
|
||||
+ std::string currentDay = SortedTimers::GetTimerDays(timer);
|
||||
+ const cTimer *nextTimer = NULL;
|
||||
+ if (i < (sortedTimers.Size() - 1)) nextTimer = sortedTimers[i + 1];
|
||||
bool bottom = false;
|
||||
- if (nextTimer == timers.end())
|
||||
- bottom = true;
|
||||
+ if (i == sortedTimers.Size() - 1) bottom = true;
|
||||
else {
|
||||
- std::string nextDay = SortedTimers::GetTimerDays(*nextTimer);
|
||||
+ std::string nextDay = SortedTimers::GetTimerDays(nextTimer);
|
||||
bottom = (currentDay != nextDay);
|
||||
}
|
||||
if (previousDay != currentDay) {
|
||||
diff -Naur vdr-plugin-live-3.0.10/timers.cpp vdr-plugin-live-master/timers.cpp
|
||||
--- vdr-plugin-live-3.0.10/timers.cpp 2021-07-18 14:51:47.000000000 +0200
|
||||
+++ vdr-plugin-live-master/timers.cpp 2021-09-10 14:11:46.000000000 +0200
|
||||
@@ -11,11 +11,6 @@
|
||||
#include <vdr/menu.h>
|
||||
#include <vdr/svdrp.h>
|
||||
|
||||
-static bool operator<( cTimer const& left, cTimer const& right )
|
||||
-{
|
||||
- return left.Compare( right ) < 0;
|
||||
-}
|
||||
-
|
||||
namespace vdrlive {
|
||||
|
||||
static char const* const TIMER_DELETE = "DELETE";
|
||||
@@ -26,7 +21,6 @@
|
||||
: m_state( 0 )
|
||||
#endif
|
||||
{
|
||||
- ReloadTimers();
|
||||
}
|
||||
|
||||
std::string SortedTimers::GetTimerId( cTimer const& timer )
|
||||
@@ -46,6 +40,11 @@
|
||||
}
|
||||
|
||||
#if VDRVERSNUM >= 20301
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp SortedTimers::GetByTimerId() LOCK_TIMERS_READ");
|
||||
+ dsyslog("live: timers.cpp SortedTimers::GetByTimerId() LOCK_CHANNELS_READ");
|
||||
+ #endif
|
||||
+ LOCK_TIMERS_READ
|
||||
LOCK_CHANNELS_READ;
|
||||
cChannel* channel = (cChannel *)Channels->GetByChannelID( tChannelID::FromString( parts[0].c_str() ) );
|
||||
#else
|
||||
@@ -64,7 +63,7 @@
|
||||
|
||||
cMutexLock MutexLock(&m_mutex);
|
||||
|
||||
- for ( SortedTimers::iterator timer = begin(); timer != end(); ++timer ) {
|
||||
+ for (cTimer* timer = (cTimer *)Timers->First(); timer; timer = (cTimer *)Timers->Next(timer)) {
|
||||
if ( timer->Channel() == channel &&
|
||||
( ( weekdays != 0 && timer->WeekDays() == weekdays ) || ( weekdays == 0 && timer->Day() == day ) ) &&
|
||||
timer->Start() == start && timer->Stop() == stop )
|
||||
@@ -94,33 +93,12 @@
|
||||
}
|
||||
|
||||
|
||||
- void SortedTimers::ReloadTimers()
|
||||
- {
|
||||
-// dsyslog("live: SortedTimers::ReloadTimers() reloading timers");
|
||||
-
|
||||
- cMutexLock MutexLock(&m_mutex);
|
||||
-
|
||||
- clear();
|
||||
-#if VDRVERSNUM >= 20301
|
||||
- {
|
||||
- LOCK_TIMERS_READ;
|
||||
- for ( cTimer* timer = (cTimer *)Timers->First(); timer; timer = (cTimer *)Timers->Next( timer ) ) {
|
||||
- push_back( *timer );
|
||||
- }
|
||||
- }
|
||||
-#else
|
||||
- for ( cTimer* timer = Timers.First(); timer; timer = Timers.Next( timer ) ) {
|
||||
- push_back( *timer );
|
||||
- }
|
||||
-#endif
|
||||
- sort();
|
||||
- }
|
||||
-
|
||||
- std::string SortedTimers::GetTimerDays(cTimer const& timer)
|
||||
+ std::string SortedTimers::GetTimerDays(cTimer const *timer)
|
||||
{
|
||||
- std::string currentDay = timer.WeekDays() > 0 ?
|
||||
- *cTimer::PrintDay(0, timer.WeekDays(), true) :
|
||||
- FormatDateTime(tr("%A, %x"), timer.Day());
|
||||
+ if (!timer) return "";
|
||||
+ std::string currentDay = timer->WeekDays() > 0 ?
|
||||
+ *cTimer::PrintDay(0, timer->WeekDays(), true) :
|
||||
+ FormatDateTime(tr("%A, %x"), timer->Day());
|
||||
return currentDay;
|
||||
}
|
||||
|
||||
@@ -269,7 +247,6 @@
|
||||
if ( m_updateTimers.size() > 0 ) {
|
||||
DoUpdateTimers();
|
||||
}
|
||||
- DoReloadTimers();
|
||||
// dsyslog("live: SV: signalling waiters");
|
||||
m_updateWait.Broadcast();
|
||||
}
|
||||
@@ -332,6 +309,9 @@
|
||||
}
|
||||
#if VDRVERSNUM >= 20301
|
||||
dsyslog("live: DoInsertTimer() add local timer");
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp TimerManager::DoInsertTimer() LOCK_TIMERS_WRITE");
|
||||
+ #endif
|
||||
LOCK_TIMERS_WRITE;
|
||||
Timers->SetExplicitModify();
|
||||
const cTimer *checkTimer = Timers->GetTimer( newTimer.get() );
|
||||
@@ -418,6 +398,9 @@
|
||||
else { // old and new are local
|
||||
dsyslog("live: DoUpdateTimer() old and new timer are local");
|
||||
#if VDRVERSNUM >= 20301
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp TimerManager::DoUpdateTimer() LOCK_TIMERS_WRITE");
|
||||
+ #endif
|
||||
LOCK_TIMERS_WRITE;
|
||||
Timers->SetExplicitModify();
|
||||
cTimer* oldTimer = Timers->GetById( timerData.id, timerData.oldRemote );
|
||||
@@ -494,6 +477,9 @@
|
||||
#endif
|
||||
|
||||
#if VDRVERSNUM >= 20301
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp TimerManager::DoDeleteTimer() LOCK_TIMERS_WRITE");
|
||||
+ #endif
|
||||
LOCK_TIMERS_WRITE;
|
||||
Timers->SetExplicitModify();
|
||||
cTimer* oldTimer = Timers->GetById( timerData.id, timerData.remote );
|
||||
@@ -527,6 +513,9 @@
|
||||
void TimerManager::DoToggleTimer( timerStruct& timerData )
|
||||
{
|
||||
if ( timerData.remote ) { // toggle remote timer via svdrpsend
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp TimerManager::DoToggleTimer() LOCK_TIMERS_READ");
|
||||
+ #endif
|
||||
LOCK_TIMERS_READ;
|
||||
const cTimer* toggleTimer = Timers->GetById( timerData.id, timerData.remote );
|
||||
std::string command = "MODT ";
|
||||
@@ -571,6 +560,9 @@
|
||||
#endif
|
||||
|
||||
#if VDRVERSNUM >= 20301
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp TimerManager::DoToggleTimer() LOCK_TIMERS_WRITE");
|
||||
+ #endif
|
||||
LOCK_TIMERS_WRITE;
|
||||
Timers->SetExplicitModify();
|
||||
cTimer* toggleTimer = Timers->GetById( timerData.id, timerData.remote );
|
||||
@@ -616,20 +608,18 @@
|
||||
const cTimer* TimerManager::GetTimer(tEventID eventid, tChannelID channelid)
|
||||
{
|
||||
cMutexLock timersLock( &LiveTimerManager() );
|
||||
- SortedTimers& timers = LiveTimerManager().GetTimers();
|
||||
|
||||
- for ( SortedTimers::iterator timer = timers.begin(); timer != timers.end(); ++timer )
|
||||
+ #ifdef DEBUG_LOCK
|
||||
+ dsyslog("live: timers.cpp TimerManager::GetTimer() LOCK_TIMERS_READ");
|
||||
+ #endif
|
||||
+ LOCK_TIMERS_READ;
|
||||
+ for (cTimer* timer = (cTimer *)Timers->First(); timer; timer = (cTimer *)Timers->Next(timer)) {
|
||||
if (timer->Channel() && timer->Channel()->GetChannelID() == channelid)
|
||||
{
|
||||
-#if VDRVERSNUM >= 20301
|
||||
- LOCK_SCHEDULES_READ;
|
||||
- if (!timer->Event()) timer->SetEventFromSchedule(Schedules);
|
||||
-#else
|
||||
- if (!timer->Event()) timer->SetEventFromSchedule();
|
||||
-#endif
|
||||
if (timer->Event() && timer->Event()->EventID() == eventid)
|
||||
return &*timer;
|
||||
}
|
||||
+ }
|
||||
return NULL;
|
||||
}
|
||||
|
||||
diff -Naur vdr-plugin-live-3.0.10/timers.h vdr-plugin-live-master/timers.h
|
||||
--- vdr-plugin-live-3.0.10/timers.h 2021-07-18 14:51:47.000000000 +0200
|
||||
+++ vdr-plugin-live-master/timers.h 2021-09-10 14:11:46.000000000 +0200
|
||||
@@ -31,7 +31,7 @@
|
||||
bool Modified() { return Timers.Modified(m_state); }
|
||||
#endif
|
||||
|
||||
- static std::string GetTimerDays(cTimer const& timer);
|
||||
+ static std::string GetTimerDays(cTimer const *timer);
|
||||
static std::string GetTimerInfo(cTimer const& timer);
|
||||
static std::string SearchTimerInfo(cTimer const& timer, std::string const& value);
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
int m_state;
|
||||
#endif
|
||||
|
||||
- void ReloadTimers();
|
||||
};
|
||||
|
||||
class TimerManager: public cMutex
|
||||
@@ -64,7 +63,6 @@
|
||||
void ToggleTimerActive( int timerId, const char* remote);
|
||||
// may only be called from Plugin::MainThreadHook
|
||||
void DoPendingWork();
|
||||
- void DoReloadTimers() { m_timers.ReloadTimers(); m_reloadTimers = false; }
|
||||
const cTimer* GetTimer(tEventID eventid, tChannelID channelid);
|
||||
void SetReloadTimers() { m_reloadTimers = true; }
|
||||
|
||||
diff -Naur vdr-plugin-live-3.0.10/tools.h vdr-plugin-live-master/tools.h
|
||||
--- vdr-plugin-live-3.0.10/tools.h 2021-07-18 14:51:47.000000000 +0200
|
||||
+++ vdr-plugin-live-master/tools.h 2021-09-10 14:11:46.000000000 +0200
|
||||
@@ -1,6 +1,9 @@
|
||||
#ifndef VDR_LIVE_TOOLS_H
|
||||
#define VDR_LIVE_TOOLS_H
|
||||
|
||||
+// uncomment to debug lock sequence
|
||||
+// #define DEBUG_LOCK
|
||||
+
|
||||
// STL headers need to be before VDR tools.h (included by <vdr/channels.h>)
|
||||
#include <istream>
|
||||
#include <sstream>
|
||||
Loading…
Add table
Add a link
Reference in a new issue