Project "Tuxbox-GIT: apps":

The branch, master has been updated
       via  62e610549182843a26c04ed04e5fd6b9cbd807f6 (commit)
       via  84b24096d52cd105cdc2b8206675dc36acdff91f (commit)
       via  1de4361b414701cca1115a97209cde79e28a1e7e (commit)
       via  c38c2baf0a7a599b0f3954ac422c8b1c54d69b27 (commit)
       via  108db7191980288ae0913f74ac6a631099e8e4aa (commit)
       via  02b79fbde6123b2c91c54e3064959766e2b0b418 (commit)
       via  689aa7ef274825fe3172b39698c18a5bae0dc754 (commit)
       via  d1b8bc02894a76f0445e493b2d2c557f95984d39 (commit)
       via  da04fabe85065c3d88c4bae3b73fa2710991a8d8 (commit)
       via  45971173f59debd02fcac74107b4a1c4d2506e28 (commit)
       via  47eea8f986f868c062d24a483877cb59a89461ca (commit)
       via  23ebc31d506f7f64e7c72ba30d43bb62050ec202 (commit)
       via  b8eab431be06215d2b69b6980dca2221587d3a91 (commit)
       via  637f72c2b0d0a88f79212174b25ee4b9577ae17c (commit)
       via  f054482507a28ab8bdb40118364403629abbe8e5 (commit)
       via  616b1b309489fef1848f1b976b1837ecd5ab2a99 (commit)
       via  244ac84bed746f4da84f7761a2ca4633d7d8851e (commit)
       via  92dbcbfe0db2303c31c600d6de3a11fdb4cf2f34 (commit)
       via  b3386eae7c5eea9cda4567f9cd3895bade97c56b (commit)
      from  a6db6293464565ac79c5e52a1358fbea51353e7d (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 62e610549182843a26c04ed04e5fd6b9cbd807f6
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Feb 8 19:38:55 2014 +0100

    Neutrino event list: consider announce time instead of start time ...
    
    .. when asking user on timer conflict
    
    just to be conform with EPG Viewer, EPG Plus and timer list
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/src/gui/eventlist.cpp 
b/tuxbox/neutrino/src/gui/eventlist.cpp
index a276c66..729023f 100644
--- a/tuxbox/neutrino/src/gui/eventlist.cpp
+++ b/tuxbox/neutrino/src/gui/eventlist.cpp
@@ -438,7 +438,7 @@ int EventList::exec(const t_channel_id channel_id, const 
std::string& channelnam
                                                                                
     evtlist[selected].startTime - (ANNOUNCETIME + 120),
                                                                                
     TIMERD_APIDS_CONF, true, recDir,false) == -1)
                                                {
-                                                       
if(askUserOnTimerConflict(evtlist[selected].startTime,
+                                                       
if(askUserOnTimerConflict(evtlist[selected].startTime - (ANNOUNCETIME + 120),
                                                                                
  evtlist[selected].startTime + evtlist[selected].duration))
                                                        {
 //                                                             
Timer.addRecordTimerEvent(channel_id,

commit 84b24096d52cd105cdc2b8206675dc36acdff91f
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Feb 8 18:48:07 2014 +0100

    Neutrino: don't get full EPG data if not needed
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp 
b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp
index b7c9da4..814eaf1 100644
--- a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp
+++ b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp
@@ -1946,8 +1946,8 @@ void CControlAPI::SendTimersXML(CyhookHandler *hh)
                std::string title = timer->epgTitle;
                if (timer->epgID != 0)
                {
-                       CEPGData epgdata;
-                       if (NeutrinoAPI->Sectionsd->getEPGid(timer->epgID, 
timer->epg_starttime, &epgdata))
+                       CShortEPGData epgdata;
+                       if (NeutrinoAPI->Sectionsd->getEPGidShort(timer->epgID, 
&epgdata))
                                title = epgdata.title;
                }
 
diff --git a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp 
b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
index ab8e6ad..363f1c9 100644
--- a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
+++ b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
@@ -806,8 +806,8 @@ std::string  
CNeutrinoYParser::func_get_timer_list(CyhookHandler */*hh*/, std::s
                                }
                                if(timer->epgID!=0)
                                {
-                                       CEPGData epgdata;
-                                       if 
(NeutrinoAPI->Sectionsd->getEPGid(timer->epgID, timer->epg_starttime, &epgdata))
+                                       CShortEPGData epgdata;
+                                       if 
(NeutrinoAPI->Sectionsd->getEPGidShort(timer->epgID, &epgdata))
                                                sAddData+="<br/>" + 
epgdata.title;
                                        else
                                                
sAddData+=std::string("<br/>")+timer->epgTitle;
diff --git a/tuxbox/neutrino/src/gui/channellist.cpp 
b/tuxbox/neutrino/src/gui/channellist.cpp
index eb68fab..4609d7b 100644
--- a/tuxbox/neutrino/src/gui/channellist.cpp
+++ b/tuxbox/neutrino/src/gui/channellist.cpp
@@ -1717,7 +1717,7 @@ void CChannelList::showdescription(int index)
 {
        ffheight = g_Font[eventFont]->getHeight();
        CChannelEvent *p_event = &chanlist[index]->currentEvent;
-       g_Sectionsd->getEPGid(p_event->eventID, p_event->startTime, &epgData);
+       g_Sectionsd->getEPGidShort(p_event->eventID, &epgData);
 
 #warning fixme sectionsd should deliver data in UTF-8 format
        if (!(epgData.info2.empty()))
diff --git a/tuxbox/neutrino/src/gui/channellist.h 
b/tuxbox/neutrino/src/gui/channellist.h
index c94b252..8a6f051 100644
--- a/tuxbox/neutrino/src/gui/channellist.h
+++ b/tuxbox/neutrino/src/gui/channellist.h
@@ -103,7 +103,7 @@ class CChannelList
                int                     infozone_width;
                int                     infozone_height;
 
-               CEPGData                epgData;
+               CShortEPGData epgData;
                bool historyMode;
                bool usedInBouquet;
                bool displayNext;
diff --git a/tuxbox/neutrino/src/gui/timerlist.cpp 
b/tuxbox/neutrino/src/gui/timerlist.cpp
index e7fb080..7e2d2e5 100644
--- a/tuxbox/neutrino/src/gui/timerlist.cpp
+++ b/tuxbox/neutrino/src/gui/timerlist.cpp
@@ -664,8 +664,8 @@ void CTimerList::paintItem(int pos)
                                        }
                                        if(timer.epgID!=0)
                                        {
-                                               CEPGData epgdata;
-                                               if 
(g_Sectionsd->getEPGid(timer.epgID, timer.epg_starttime, &epgdata))
+                                               CShortEPGData epgdata;
+                                               if 
(g_Sectionsd->getEPGidShort(timer.epgID, &epgdata))
                                                {
 #warning fixme sectionsd should deliver data in UTF-8 format
                                                        zAddData += " : ";
@@ -1288,9 +1288,9 @@ bool askUserOnTimerConflict(time_t announceTime, time_t 
stopTime)
                timerbuf += 
CTimerList::convertChannelId2String(it->channel_id); // UTF-8
                if(it->epgID != 0)
                {
-                       CEPGData epgdata;
+                       CShortEPGData epgdata;
                        timerbuf += ": ";
-                       if (g_Sectionsd->getEPGid(it->epgID, it->epg_starttime, 
&epgdata))
+                       if (g_Sectionsd->getEPGidShort(it->epgID, &epgdata))
                        {
 #warning fixme sectionsd should deliver data in UTF-8 format
                                timerbuf += Latin1_to_UTF8(epgdata.title);
diff --git a/tuxbox/neutrino/src/neutrino.cpp b/tuxbox/neutrino/src/neutrino.cpp
index ed2684b..ec360d9 100644
--- a/tuxbox/neutrino/src/neutrino.cpp
+++ b/tuxbox/neutrino/src/neutrino.cpp
@@ -3046,10 +3046,10 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t m, 
neutrino_msg_data_t data)
 
                                if (eventinfo->epgID != 0)
                                {
-                                       CEPGData epgdata;
+                                       CShortEPGData epgdata;
 #warning fixme sectionsd should deliver data in UTF-8 format
                                        zAddData += " :\n";
-                                       if 
(g_Sectionsd->getEPGid(eventinfo->epgID, eventinfo->epg_starttime, &epgdata))
+                                       if 
(g_Sectionsd->getEPGidShort(eventinfo->epgID, &epgdata))
                                                zAddData += 
Latin1_to_UTF8(epgdata.title);
                                        else if (strlen(eventinfo->epgTitle) != 
0)
                                                zAddData += 
Latin1_to_UTF8(eventinfo->epgTitle);
@@ -3120,10 +3120,10 @@ int CNeutrinoApp::handleMsg(const neutrino_msg_t m, 
neutrino_msg_data_t data)
 
                                if (eventinfo->epgID != 0)
                                {
-                                       CEPGData epgdata;
+                                       CShortEPGData epgdata;
 #warning fixme sectionsd should deliver data in UTF-8 format
                                        zAddData += " :\n";
-                                       if 
(g_Sectionsd->getEPGid(eventinfo->epgID, eventinfo->epg_starttime, &epgdata))
+                                       if 
(g_Sectionsd->getEPGidShort(eventinfo->epgID, &epgdata))
                                                zAddData += 
Latin1_to_UTF8(epgdata.title);
                                        else if (strlen(eventinfo->epgTitle) != 
0)
                                                zAddData += 
Latin1_to_UTF8(eventinfo->epgTitle);

commit 1de4361b414701cca1115a97209cde79e28a1e7e
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Wed Jan 29 18:31:05 2014 +0100

    nhttpd controlapi and yParser: avoid unnecessary socket communication ...
    
    ... if current EPG is not available
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp 
b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp
index e1b7cb9..b7c9da4 100644
--- a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp
+++ b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/controlapi.cpp
@@ -1409,8 +1409,8 @@ void CControlAPI::ZaptoCGI(CyhookHandler *hh)
                        t_channel_id current_channel = 
NeutrinoAPI->Zapit->getCurrentServiceID();
                        CSectionsdClient::LinkageDescriptorList desc;
                        CSectionsdClient::responseGetCurrentNextInfoChannelID 
currentNextInfo;
-                       
NeutrinoAPI->Sectionsd->getCurrentNextServiceKey(current_channel, 
currentNextInfo);
-                       if 
(NeutrinoAPI->Sectionsd->getLinkageDescriptorsUniqueKey(currentNextInfo.current_uniqueKey,desc))
+                       bool has_current_next = 
NeutrinoAPI->Sectionsd->getCurrentNextServiceKey(current_channel, 
currentNextInfo);
+                       if (has_current_next && 
NeutrinoAPI->Sectionsd->getLinkageDescriptorsUniqueKey(currentNextInfo.current_uniqueKey,
 desc))
                        {
                                for(unsigned int i=0;i< desc.size();i++)
                                {
@@ -1677,8 +1677,8 @@ void CControlAPI::SendAllCurrentVAPid(CyhookHandler *hh)
 
        t_channel_id current_channel = 
NeutrinoAPI->Zapit->getCurrentServiceID();
        CSectionsdClient::responseGetCurrentNextInfoChannelID currentNextInfo;
-       NeutrinoAPI->Sectionsd->getCurrentNextServiceKey(current_channel, 
currentNextInfo);
-       if 
(NeutrinoAPI->Sectionsd->getComponentTagsUniqueKey(currentNextInfo.current_uniqueKey,tags))
+       bool has_current_next = 
NeutrinoAPI->Sectionsd->getCurrentNextServiceKey(current_channel, 
currentNextInfo);
+       if (has_current_next && 
NeutrinoAPI->Sectionsd->getComponentTagsUniqueKey(currentNextInfo.current_uniqueKey,
 tags))
        {
                for (unsigned short j=0; j< pids.APIDs.size(); j++)
                {
diff --git a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp 
b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
index ec636f2..ab8e6ad 100644
--- a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
+++ b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
@@ -537,8 +537,8 @@ std::string  
CNeutrinoYParser::func_get_audio_pids_as_dropdown(CyhookHandler */*
 
        t_channel_id current_channel = 
NeutrinoAPI->Zapit->getCurrentServiceID();
        CSectionsdClient::responseGetCurrentNextInfoChannelID currentNextInfo;
-       NeutrinoAPI->Sectionsd->getCurrentNextServiceKey(current_channel, 
currentNextInfo);
-       if 
(NeutrinoAPI->Sectionsd->getComponentTagsUniqueKey(currentNextInfo.current_uniqueKey,tags))
+       bool has_current_next = 
NeutrinoAPI->Sectionsd->getCurrentNextServiceKey(current_channel, 
currentNextInfo);
+       if (has_current_next && 
NeutrinoAPI->Sectionsd->getComponentTagsUniqueKey(currentNextInfo.current_uniqueKey,
 tags))
        {
                for (unsigned short j=0; j< pids.APIDs.size(); j++)
                {

commit c38c2baf0a7a599b0f3954ac422c8b1c54d69b27
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Tue Jan 28 21:41:54 2014 +0100

    nhttpd NeutrinoAPI: fix getting channel events if sections scan is active
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoapi.cpp 
b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoapi.cpp
index 18abee9..e128e60 100644
--- a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoapi.cpp
+++ b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoapi.cpp
@@ -241,7 +241,7 @@ bool CNeutrinoAPI::GetStreamInfo(int bitInfo[10])
 
 bool CNeutrinoAPI::GetChannelEvents(void)
 {
-       eList = Sectionsd->getChannelEvents();
+       eList = Sectionsd->getChannelEvents(Zapit->getMode() != 
CZapitClient::MODE_RADIO);
        CChannelEventList::iterator eventIterator;
 
        ChannelListEvents.clear();

commit 108db7191980288ae0913f74ac6a631099e8e4aa
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Mon Jan 27 19:08:14 2014 +0100

    Neutrino SHTDCNT: init shutdown_cnt
    
    also remove undefined method 'setlcdparameter'
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/src/driver/shutdown_count.cpp 
b/tuxbox/neutrino/src/driver/shutdown_count.cpp
index 688bd85..8c4b6d6 100644
--- a/tuxbox/neutrino/src/driver/shutdown_count.cpp
+++ b/tuxbox/neutrino/src/driver/shutdown_count.cpp
@@ -62,6 +62,7 @@ void* SHTDCNT::TimeThread(void *)
 
 void SHTDCNT::init()
 {
+       shutdown_cnt = atoi(g_settings.shutdown_count) * 60;
        if (pthread_create (&thrTime, NULL, TimeThread, NULL) != 0 )
        {
                perror("[SHTDCNT]: pthread_create(TimeThread)");
diff --git a/tuxbox/neutrino/src/driver/shutdown_count.h 
b/tuxbox/neutrino/src/driver/shutdown_count.h
index 81a68a2..7eb350f 100644
--- a/tuxbox/neutrino/src/driver/shutdown_count.h
+++ b/tuxbox/neutrino/src/driver/shutdown_count.h
@@ -42,8 +42,6 @@ class SHTDCNT
 
        public:
 
-               void setlcdparameter(void);
-
                static SHTDCNT* getInstance();
                void init();
 };

commit 02b79fbde6123b2c91c54e3064959766e2b0b418
Author: Thilo Graf <d...@novatux.de>
Date:   Mon Jan 27 18:27:28 2014 +0100

    Neutrino CBookmarkManager: init bookmarksmodified in constructor
    
    var bookmarksmodified was not intitialized
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/src/gui/bookmarkmanager.cpp 
b/tuxbox/neutrino/src/gui/bookmarkmanager.cpp
index 4b5e41c..51bb9bf 100644
--- a/tuxbox/neutrino/src/gui/bookmarkmanager.cpp
+++ b/tuxbox/neutrino/src/gui/bookmarkmanager.cpp
@@ -185,6 +185,7 @@ void CBookmarkManager::writeBookmarkFile() {
 
 CBookmarkManager::CBookmarkManager() : bookmarkfile ('\t')
 {
+       bookmarksmodified = false;
        readBookmarkFile();
 }
 

commit 689aa7ef274825fe3172b39698c18a5bae0dc754
Author: martii <m4r...@gmx.de>
Date:   Sun Jan 26 17:53:44 2014 +0100

    nhttpd yParser: fix apparent typo
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp 
b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
index 9312c06..ec636f2 100644
--- a/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
+++ b/tuxbox/neutrino/daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp
@@ -613,7 +613,7 @@ std::string  
CNeutrinoYParser::func_unmount_get_list(CyhookHandler */*hh*/, std:
                in >> ymount >> ylocal_dir >> yfstype;
                in.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
                yfstype = trim(yfstype);
-               if( (yfstype == "nfs") << (yfstype == "ftp") || (yfstype == 
"lufsd") )
+               if( (yfstype == "nfs") || (yfstype == "ftp") || (yfstype == 
"lufsd") )
                {
                        mounts=ylocal_dir +" on "+ ymount + " ("+yfstype+")";
                        ysel = ((j==0) ? "checked=\"checked\"" : "");

commit d1b8bc02894a76f0445e493b2d2c557f95984d39
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Jan 25 14:46:53 2014 +0100

    yWeb: bump version to 2.7.0.31
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/nhttpd/web/Y_Version.txt 
b/tuxbox/neutrino/daemons/nhttpd/web/Y_Version.txt
index a8e3b95..d98bacb 100644
--- a/tuxbox/neutrino/daemons/nhttpd/web/Y_Version.txt
+++ b/tuxbox/neutrino/daemons/nhttpd/web/Y_Version.txt
@@ -1,5 +1,5 @@
-version=2.7.0.30
-date=23.10.2013
+version=2.7.0.31
+date=11.01.2014
 type=Release
 info=
 

commit da04fabe85065c3d88c4bae3b73fa2710991a8d8
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sun Jan 19 19:33:57 2014 +0100

    timerd: reset EPG ID when modifying record or zapto timer
    
    this ensures an up-to-date EPG ID if no EPG infos available for the
    modified event during modification
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/timerd/timermanager.cpp 
b/tuxbox/neutrino/daemons/timerd/timermanager.cpp
index 14a8b69..3dbc6da 100644
--- a/tuxbox/neutrino/daemons/timerd/timermanager.cpp
+++ b/tuxbox/neutrino/daemons/timerd/timermanager.cpp
@@ -360,13 +360,19 @@ int CTimerManager::modifyEvent(int ev_ID, time_t 
announceTime, time_t alarmTime,
                                break;
                        case CTimerd::TIMER_RECORD:
                        {
-                               
(static_cast<CTimerEvent_Record*>(event))->recordingDir = data.recordingDir;
-                               
(static_cast<CTimerEvent_Record*>(event))->getEpgId(); 
+                               CTimerEvent_Record *event_record = 
static_cast<CTimerEvent_Record*>(event);
+                               event_record->recordingDir = data.recordingDir;
+                               event_record->eventInfo.epgID = 0;
+                               event_record->eventInfo.epg_starttime = 0;
+                               event_record->getEpgId();
                                break;
                        }
                        case CTimerd::TIMER_ZAPTO:
                        {
-                               
(static_cast<CTimerEvent_Zapto*>(event))->getEpgId(); 
+                               CTimerEvent_Zapto *event_zapto = 
static_cast<CTimerEvent_Zapto*>(event);
+                               event_zapto->eventInfo.epgID = 0;
+                               event_zapto->eventInfo.epg_starttime = 0;
+                               event_zapto->getEpgId();
                                break;
                        }
                        default:

commit 45971173f59debd02fcac74107b4a1c4d2506e28
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sun Jan 19 14:38:59 2014 +0100

    Neutrino timerlist: sort timer type chooser alphabetically
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/data/locale/english.locale 
b/tuxbox/neutrino/data/locale/english.locale
index 835ebe3..8d6f200 100644
--- a/tuxbox/neutrino/data/locale/english.locale
+++ b/tuxbox/neutrino/data/locale/english.locale
@@ -1475,7 +1475,7 @@ timerlist.standby SB mode
 timerlist.standby.off Leave standby
 timerlist.standby.on Enter standby
 timerlist.stoptime Stop time
-timerlist.type Timer typ
+timerlist.type Timer type
 timerlist.type.execplugin Execute plugin
 timerlist.type.nextprogram Next program
 timerlist.type.record Record
diff --git a/tuxbox/neutrino/src/gui/timerlist.cpp 
b/tuxbox/neutrino/src/gui/timerlist.cpp
index 41cff0f..e7fb080 100644
--- a/tuxbox/neutrino/src/gui/timerlist.cpp
+++ b/tuxbox/neutrino/src/gui/timerlist.cpp
@@ -1138,7 +1138,7 @@ int CTimerList::newTimer()
        CTimerListNewNotifier notifier2((int *)&timerNew.eventType,
                                        &timerNew.stopTime,m2,m6,m8,m9,m10,m7,
                                        timerSettings_stopTime.getValue());
-       CMenuOptionChooser* m0 = new CMenuOptionChooser(LOCALE_TIMERLIST_TYPE, 
(int *)&timerNew.eventType, TIMERLIST_TYPE_OPTIONS, 
TIMERLIST_TYPE_OPTION_COUNT, true, &notifier2);
+       CMenuOptionChooser* m0 = new CMenuOptionChooser(LOCALE_TIMERLIST_TYPE, 
(int *)&timerNew.eventType, TIMERLIST_TYPE_OPTIONS, 
TIMERLIST_TYPE_OPTION_COUNT, true, &notifier2, CRCInput::RC_nokey, "", false, 
true);
 
        timerSettings.addItem( m0);
        timerSettings.addItem( m1);

commit 47eea8f986f868c062d24a483877cb59a89461ca
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Jan 18 22:37:04 2014 +0100

    Neutrino CVCRControl: always use correct EPG ID when filling movie infos
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/src/driver/vcrcontrol.cpp 
b/tuxbox/neutrino/src/driver/vcrcontrol.cpp
index a61a967..398a2a3 100644
--- a/tuxbox/neutrino/src/driver/vcrcontrol.cpp
+++ b/tuxbox/neutrino/src/driver/vcrcontrol.cpp
@@ -441,6 +441,7 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
        CMovieInfo cMovieInfo;
        MI_MOVIE_INFO movieInfo;
        std::string info1, info2;
+       event_id_t epg_id = epgid;
 
        cMovieInfo.clearMovieInfo(&movieInfo);
        CZapitClient::responseGetPIDs pids;
@@ -454,12 +455,12 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
                movieInfo.epgChannel = tmpstring;
 
        tmpstring = (epgTitle.empty()) ? "not available" : 
Latin1_to_UTF8(epgTitle);
-       if (epgid != 0)
+       if (epg_id != 0)
        {
 //#define SHORT_EPG
 #ifdef SHORT_EPG
                CShortEPGData epgdata;
-               if (g_Sectionsd->getEPGidShort(epgid, &epgdata))
+               if (g_Sectionsd->getEPGidShort(epg_id, &epgdata))
                {
 #warning fixme sectionsd should deliver data in UTF-8 format
                        tmpstring = Latin1_to_UTF8(epgdata.title);
@@ -468,12 +469,14 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
                }
 #else
                CEPGData epgdata;
-               bool has_epgdata = g_Sectionsd->getEPGid(epgid, epg_time, 
&epgdata);
+               bool has_epgdata = g_Sectionsd->getEPGid(epg_id, epg_time, 
&epgdata);
                if (!has_epgdata)
                {
                        has_epgdata = 
g_Sectionsd->getActualEPGServiceKey(channel_id, &epgdata);
                        if (has_epgdata && !epgTitle.empty() && epgTitle != 
epgdata.title)
                                has_epgdata = false;
+                       if (has_epgdata)
+                               epg_id = epgdata.eventID;
                }
                if (has_epgdata)
                {
@@ -496,13 +499,13 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
        movieInfo.epgId =               channel_id;
        movieInfo.epgInfo1 =    info1;
        movieInfo.epgInfo2 =    info2;
-       movieInfo.epgEpgId =    epgid ;
+       movieInfo.epgEpgId =    epg_id;
        movieInfo.epgMode =     g_Zapit->getMode();
        movieInfo.epgVideoPid = si.vpid;
 
        EPG_AUDIO_PIDS audio_pids;
        // super hack :-), der einfachste weg an die apid descriptions 
ranzukommen
-       g_RemoteControl->current_EPGid = epgid;
+       g_RemoteControl->current_EPGid = epg_id;
        g_RemoteControl->current_PIDs = pids;
        g_RemoteControl->processAPIDnames();
        APIDList apid_list;

commit 23ebc31d506f7f64e7c72ba30d43bb62050ec202
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Jan 18 21:19:47 2014 +0100

    Neutrino CVCRControl: only use current EPG if it has wanted EPG title
    
    based on patch by Jacek Jendrzej <crash...@googlemail.com> in Coolstream Git
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/src/driver/vcrcontrol.cpp 
b/tuxbox/neutrino/src/driver/vcrcontrol.cpp
index 0247d2d..a61a967 100644
--- a/tuxbox/neutrino/src/driver/vcrcontrol.cpp
+++ b/tuxbox/neutrino/src/driver/vcrcontrol.cpp
@@ -469,8 +469,12 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
 #else
                CEPGData epgdata;
                bool has_epgdata = g_Sectionsd->getEPGid(epgid, epg_time, 
&epgdata);
-               if (!has_epgdata && epgTitle.empty())
+               if (!has_epgdata)
+               {
                        has_epgdata = 
g_Sectionsd->getActualEPGServiceKey(channel_id, &epgdata);
+                       if (has_epgdata && !epgTitle.empty() && epgTitle != 
epgdata.title)
+                               has_epgdata = false;
+               }
                if (has_epgdata)
                {
 #warning fixme sectionsd should deliver data in UTF-8 format

commit b8eab431be06215d2b69b6980dca2221587d3a91
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Jan 18 19:25:45 2014 +0100

    Neutrino timerlist: skip repeated timer event with blue key
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/data/locale/deutsch.locale 
b/tuxbox/neutrino/data/locale/deutsch.locale
index e959463..459ef9b 100644
--- a/tuxbox/neutrino/data/locale/deutsch.locale
+++ b/tuxbox/neutrino/data/locale/deutsch.locale
@@ -1432,7 +1432,6 @@ timerlist.apids_dflt Voreingestellte Tonspuren aufnehmen
 timerlist.bouquetselect Bouquet wählen
 timerlist.channel Kanal
 timerlist.channelselect Kanal wählen
-timerlist.close Schließen
 timerlist.delete Löschen
 timerlist.menumodify Timer bearbeiten
 timerlist.menunew Neuer Timer
@@ -1471,6 +1470,7 @@ timerlist.repeatcount Wiederholungen
 timerlist.repeatcount.help1 Anzahl der Timerausführungen
 timerlist.repeatcount.help2 0 für unbegrenzte Anzahl
 timerlist.save Timer speichern
+timerlist.skip Aussetzen
 timerlist.standby SB Modus
 timerlist.standby.off Aufwachen aus Standby
 timerlist.standby.on Auf Standby gehen
diff --git a/tuxbox/neutrino/data/locale/english.locale 
b/tuxbox/neutrino/data/locale/english.locale
index d03aa0f..835ebe3 100644
--- a/tuxbox/neutrino/data/locale/english.locale
+++ b/tuxbox/neutrino/data/locale/english.locale
@@ -1432,7 +1432,6 @@ timerlist.apids_dflt record default audio streams
 timerlist.bouquetselect choose bouquet
 timerlist.channel Channel
 timerlist.channelselect choose channel
-timerlist.close Exit
 timerlist.delete Delete
 timerlist.menumodify Modify timer
 timerlist.menunew New timer
@@ -1471,6 +1470,7 @@ timerlist.repeatcount repeats
 timerlist.repeatcount.help1 amount of timer repeats
 timerlist.repeatcount.help2 0 for unlimited repeats
 timerlist.save Save timer
+timerlist.skip Skip
 timerlist.standby SB mode
 timerlist.standby.off Leave standby
 timerlist.standby.on Enter standby
diff --git a/tuxbox/neutrino/src/gui/timerlist.cpp 
b/tuxbox/neutrino/src/gui/timerlist.cpp
index 52b1181..41cff0f 100644
--- a/tuxbox/neutrino/src/gui/timerlist.cpp
+++ b/tuxbox/neutrino/src/gui/timerlist.cpp
@@ -515,7 +515,11 @@ int CTimerList::show()
                {
                        update=true;
                }
-               else if ( msg == CRCInput::RC_blue || CRCInput::isNumeric(msg) )
+               else if (msg == CRCInput::RC_blue && !timerlist.empty())
+               {
+                       update = skipTimer();
+               }
+               else if (CRCInput::isNumeric(msg))
                {
                        //Ignore
                }
@@ -751,8 +755,8 @@ const struct button_label TimerListButtons[5] =
        { NEUTRINO_ICON_BUTTON_RED   , LOCALE_TIMERLIST_DELETE },
        { NEUTRINO_ICON_BUTTON_GREEN , LOCALE_TIMERLIST_NEW    },
        { NEUTRINO_ICON_BUTTON_YELLOW, LOCALE_TIMERLIST_RELOAD },
-       { NEUTRINO_ICON_BUTTON_HOME  , LOCALE_TIMERLIST_CLOSE  },
-       { NEUTRINO_ICON_BUTTON_OKAY  , LOCALE_TIMERLIST_MODIFY }
+       { NEUTRINO_ICON_BUTTON_OKAY  , LOCALE_TIMERLIST_MODIFY },
+       { NEUTRINO_ICON_BUTTON_BLUE  , LOCALE_TIMERLIST_SKIP   }
 };
 
 void CTimerList::paintFoot()
@@ -761,9 +765,13 @@ void CTimerList::paintFoot()
        int ButtonWidth = (width - 20) / 5;
        frameBuffer->paintBoxRel(x, y_foot, width, footHeight, 
COL_INFOBAR_SHADOW_PLUS_1, RADIUS_MID, CORNER_BOTTOM);
        if (timerlist.empty())
-               ::paintButtons(frameBuffer, 
g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], g_Locale, x + 10 + 
ButtonWidth, y_foot, ButtonWidth, 3, &(TimerListButtons[1]));
+               ::paintButtons(frameBuffer, 
g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], g_Locale, x + 10 + 
ButtonWidth, y_foot, ButtonWidth, 2, &(TimerListButtons[1]));
        else
-               ::paintButtons(frameBuffer, 
g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], g_Locale, x + 10, y_foot, 
ButtonWidth, 5, TimerListButtons);
+       {
+               CTimerd::responseGetTimer* timer = &timerlist[selected];
+               unsigned int buttonsCount = (timer->eventRepeat != 
CTimerd::TIMERREPEAT_ONCE && timer->repeatCount != 1) ? 5 : 4;
+               ::paintButtons(frameBuffer, 
g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL], g_Locale, x + 10, y_foot, 
ButtonWidth, buttonsCount, TimerListButtons);
+       }
 }
 
 void CTimerList::paint()
@@ -810,6 +818,8 @@ void CTimerList::updateSelection(unsigned int newpos)
                        paintItem(prev_selected - liststart);
                        paintItem(selected - liststart);
                }
+
+               paintFoot();
        }
 }
 
@@ -1153,6 +1163,89 @@ int CTimerList::newTimer()
        return ret;
 }
 
+bool CTimerList::skipTimer()
+{
+       CTimerd::responseGetTimer* timer = &timerlist[selected];
+       if (timer->eventRepeat != CTimerd::TIMERREPEAT_ONCE && 
timer->repeatCount != 1)
+       {
+               struct tm *t = localtime(&timer->alarmTime);
+               int isdst1 = t->tm_isdst;
+               switch (timer->eventRepeat)
+               {
+                       case CTimerd::TIMERREPEAT_DAILY:
+                               t->tm_mday++;
+                               break;
+                       case CTimerd::TIMERREPEAT_WEEKLY:
+                               t->tm_mday += 7;
+                               break;
+                       case CTimerd::TIMERREPEAT_BIWEEKLY:
+                               t->tm_mday += 14;
+                               break;
+                       case CTimerd::TIMERREPEAT_FOURWEEKLY:
+                               t->tm_mday += 28;
+                               break;
+                       case CTimerd::TIMERREPEAT_MONTHLY:
+                               t->tm_mon++;
+                               break;
+                       default:
+                               if (timer->eventRepeat >= 
CTimerd::TIMERREPEAT_WEEKDAYS)
+                               {
+                                       int weekdays = 
((int)timer->eventRepeat) >> 9;
+                                       if (weekdays > 0)
+                                       {
+                                               bool weekday_arr[7];
+                                               weekday_arr[0] = ((weekdays & 
0x40) > 0); //So
+                                               weekday_arr[1] = ((weekdays & 
0x1)  > 0); //Mo
+                                               weekday_arr[2] = ((weekdays & 
0x2)  > 0); //Di
+                                               weekday_arr[3] = ((weekdays & 
0x4)  > 0); //Mi
+                                               weekday_arr[4] = ((weekdays & 
0x8)  > 0); //Do
+                                               weekday_arr[5] = ((weekdays & 
0x10) > 0); //Fr
+                                               weekday_arr[6] = ((weekdays & 
0x20) > 0); //Sa
+                                               struct tm *t2 = 
localtime(&timer->alarmTime);
+                                               int day = 1;
+                                               for (; 
!weekday_arr[(t2->tm_wday + day) % 7]; day++);
+                                               t2->tm_mday += day;
+                                       }
+                               }
+               }
+               time_t diff = mktime(t) - timer->alarmTime;
+               timer->alarmTime += diff;
+               t = localtime(&timer->alarmTime);
+               int isdst2 = t->tm_isdst;
+               if (isdst2 > isdst1) //change from winter to summer
+               {
+                       diff -= 3600;
+                       timer->alarmTime -= 3600;
+               }
+               else if (isdst1 > isdst2) //change from summer to winter
+               {
+                       diff += 3600;
+                       timer->alarmTime += 3600;
+               }
+               if (timer->announceTime > 0)
+                       timer->announceTime += diff;
+               if (timer->stopTime > 0)
+                       timer->stopTime += diff;
+               if (timer->repeatCount > 0)
+                       timer->repeatCount--;
+
+               if (timer->eventType == CTimerd::TIMER_RECORD)
+               {
+                       Timer->modifyRecordTimerEvent(timer->eventID, 
timer->announceTime, timer->alarmTime,
+                                               timer->stopTime, 
timer->eventRepeat, timer->repeatCount, timer->recordingDir);
+               }
+               else
+               {
+                       Timer->modifyTimerEvent(timer->eventID, 
timer->announceTime, timer->alarmTime,
+                                               timer->stopTime, 
timer->eventRepeat, timer->repeatCount);
+               }
+
+               return true;
+       }
+
+       return false;
+}
+
 bool askUserOnTimerConflict(time_t announceTime, time_t stopTime)
 {
        CTimerdClient Timer;
diff --git a/tuxbox/neutrino/src/gui/timerlist.h 
b/tuxbox/neutrino/src/gui/timerlist.h
index 6317150..5d29c5e 100644
--- a/tuxbox/neutrino/src/gui/timerlist.h
+++ b/tuxbox/neutrino/src/gui/timerlist.h
@@ -84,6 +84,7 @@ class CTimerList : public CMenuTarget
                void updateSelection(unsigned int newpos);
                int modifyTimer();
                int newTimer();
+               bool skipTimer();
 
        public:
                CTimerList();
diff --git a/tuxbox/neutrino/src/system/locals.h 
b/tuxbox/neutrino/src/system/locals.h
index 48c2862..bd6891e 100644
--- a/tuxbox/neutrino/src/system/locals.h
+++ b/tuxbox/neutrino/src/system/locals.h
@@ -1459,7 +1459,6 @@ typedef enum
        LOCALE_TIMERLIST_BOUQUETSELECT,
        LOCALE_TIMERLIST_CHANNEL,
        LOCALE_TIMERLIST_CHANNELSELECT,
-       LOCALE_TIMERLIST_CLOSE,
        LOCALE_TIMERLIST_DELETE,
        LOCALE_TIMERLIST_MENUMODIFY,
        LOCALE_TIMERLIST_MENUNEW,
@@ -1498,6 +1497,7 @@ typedef enum
        LOCALE_TIMERLIST_REPEATCOUNT_HELP1,
        LOCALE_TIMERLIST_REPEATCOUNT_HELP2,
        LOCALE_TIMERLIST_SAVE,
+       LOCALE_TIMERLIST_SKIP,
        LOCALE_TIMERLIST_STANDBY,
        LOCALE_TIMERLIST_STANDBY_OFF,
        LOCALE_TIMERLIST_STANDBY_ON,
diff --git a/tuxbox/neutrino/src/system/locals_intern.h 
b/tuxbox/neutrino/src/system/locals_intern.h
index f179574..a19ea99 100644
--- a/tuxbox/neutrino/src/system/locals_intern.h
+++ b/tuxbox/neutrino/src/system/locals_intern.h
@@ -1459,7 +1459,6 @@ const char * locale_real_names[] =
        "timerlist.bouquetselect",
        "timerlist.channel",
        "timerlist.channelselect",
-       "timerlist.close",
        "timerlist.delete",
        "timerlist.menumodify",
        "timerlist.menunew",
@@ -1498,6 +1497,7 @@ const char * locale_real_names[] =
        "timerlist.repeatcount.help1",
        "timerlist.repeatcount.help2",
        "timerlist.save",
+       "timerlist.skip",
        "timerlist.standby",
        "timerlist.standby.off",
        "timerlist.standby.on",

commit 637f72c2b0d0a88f79212174b25ee4b9577ae17c
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Fri Jan 17 20:01:52 2014 +0100

    Neutrino CVCRControl: use EPG title of timer if EPG entry missing
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/src/driver/vcrcontrol.cpp 
b/tuxbox/neutrino/src/driver/vcrcontrol.cpp
index 6252261..0247d2d 100644
--- a/tuxbox/neutrino/src/driver/vcrcontrol.cpp
+++ b/tuxbox/neutrino/src/driver/vcrcontrol.cpp
@@ -434,8 +434,8 @@ void 
CVCRControl::CFileAndServerDevice::CutBackNeutrino(const t_channel_id chann
 
 std::string CVCRControl::CFileAndServerDevice::getMovieInfoString(const 
t_channel_id channel_id,
                                                                  const 
event_id_t epgid, const time_t epg_time,
-                                                                 unsigned char 
apids, const bool save_vtxt_pid,
-                                                                 const bool 
save_sub_pids)
+                                                                 const 
std::string& epgTitle, unsigned char apids,
+                                                                 const bool 
save_vtxt_pid, const bool save_sub_pids)
 {
        std::string extMessage;
        CMovieInfo cMovieInfo;
@@ -453,7 +453,7 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
        else
                movieInfo.epgChannel = tmpstring;
 
-       tmpstring = "not available";
+       tmpstring = (epgTitle.empty()) ? "not available" : 
Latin1_to_UTF8(epgTitle);
        if (epgid != 0)
        {
 //#define SHORT_EPG
@@ -468,7 +468,10 @@ std::string 
CVCRControl::CFileAndServerDevice::getMovieInfoString(const t_channe
                }
 #else
                CEPGData epgdata;
-               if (g_Sectionsd->getEPGid(epgid, epg_time, &epgdata))
+               bool has_epgdata = g_Sectionsd->getEPGid(epgid, epg_time, 
&epgdata);
+               if (!has_epgdata && epgTitle.empty())
+                       has_epgdata = 
g_Sectionsd->getActualEPGServiceKey(channel_id, &epgdata);
+               if (has_epgdata)
                {
 #warning fixme sectionsd should deliver data in UTF-8 format
                        tmpstring = Latin1_to_UTF8(epgdata.title);
@@ -587,7 +590,7 @@ std::string 
CVCRControl::CFileAndServerDevice::getCommandString(const CVCRComman
        extMessage += "</channelname>\n\t\t<epgtitle>";
        
 //             CSectionsdClient::responseGetCurrentNextInfoChannelID 
current_next;
-       tmpstring = "not available";
+       tmpstring = (epgTitle.empty()) ? "not available" : 
Latin1_to_UTF8(epgTitle);
        if (epgid != 0)
        {
                CShortEPGData epgdata;
@@ -598,14 +601,6 @@ std::string 
CVCRControl::CFileAndServerDevice::getCommandString(const CVCRComman
                        info1 = Latin1_to_UTF8(epgdata.info1);
                        info2 = Latin1_to_UTF8(epgdata.info2);
                }
-               else if (!epgTitle.empty())
-               {
-                       tmpstring = epgTitle;
-               }
-       }
-       else if (!epgTitle.empty())
-       {
-               tmpstring = epgTitle;
        }
        extMessage += ZapitTools::UTF8_to_UTF8XML(tmpstring.c_str());
        
@@ -900,7 +895,7 @@ bool CVCRControl::CFileDevice::Record(const t_channel_id 
channel_id, int mode, c
        } else
        {
                error_msg = ::start_recording(filename,
-                                             getMovieInfoString(channel_id, 
epgid, epg_time, apids, save_vtxt_pid, save_sub_pids).c_str(),
+                                             getMovieInfoString(channel_id, 
epgid, epg_time, epgTitle, apids, save_vtxt_pid, save_sub_pids).c_str(),
                                              mode,
                                              Use_O_Sync,
                                              Use_Fdatasync,
diff --git a/tuxbox/neutrino/src/driver/vcrcontrol.h 
b/tuxbox/neutrino/src/driver/vcrcontrol.h
index 33da351..3e50c01 100644
--- a/tuxbox/neutrino/src/driver/vcrcontrol.h
+++ b/tuxbox/neutrino/src/driver/vcrcontrol.h
@@ -110,7 +110,7 @@ class CVCRControl
                        void RestoreNeutrino(void);
                        void CutBackNeutrino(const t_channel_id channel_id, 
const int mode);
                        std::string getCommandString(const CVCRCommand command, 
const t_channel_id channel_id, const event_id_t epgid, const std::string& 
epgTitle, unsigned char apids);
-                       std::string getMovieInfoString(const t_channel_id 
channel_id, const event_id_t epgid, const time_t epg_time, unsigned char apids, 
const bool save_vtxt_pid, const bool save_sub_pids);
+                       std::string getMovieInfoString(const t_channel_id 
channel_id, const event_id_t epgid, const time_t epg_time, const std::string& 
epgTitle, unsigned char apids, const bool save_vtxt_pid, const bool 
save_sub_pids);
 
                public:
                        bool    StopPlayBack;

commit f054482507a28ab8bdb40118364403629abbe8e5
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Fri Jan 17 18:27:12 2014 +0100

    timerd: also init recording and zapto safety if config file doesn't exist
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/timerd/timermanager.cpp 
b/tuxbox/neutrino/daemons/timerd/timermanager.cpp
index 22e2568..14a8b69 100644
--- a/tuxbox/neutrino/daemons/timerd/timermanager.cpp
+++ b/tuxbox/neutrino/daemons/timerd/timermanager.cpp
@@ -648,11 +648,9 @@ void CTimerManager::loadRecordingSafety()
                /* set defaults if no configuration file exists */
                dprintf("%s not found\n", config_file_name);
        }
-       else
-       {
-               m_extraTimeStart = config.getInt32 ("EXTRA_TIME_START",0);
-               m_extraTimeEnd  = config.getInt32 ("EXTRA_TIME_END",0);
-       }
+
+       m_extraTimeStart = config.getInt32("EXTRA_TIME_START", 0);
+       m_extraTimeEnd = config.getInt32("EXTRA_TIME_END", 0);
 }
 // 
-------------------------------------------------------------------------------------
 void CTimerManager::loadZaptoSafety()
@@ -664,10 +662,8 @@ void CTimerManager::loadZaptoSafety()
                /* set defaults if no configuration file exists */
                dprintf("%s not found\n", config_file_name);
        }
-       else
-       {
-               m_zaptoExtraTimeStart = config.getInt32 
("ZAPTO_EXTRA_TIME_START",0);
-       }
+
+       m_zaptoExtraTimeStart = config.getInt32("ZAPTO_EXTRA_TIME_START", 0);
 }
 // 
-------------------------------------------------------------------------------------
 void CTimerManager::saveEventsToConfig()

commit 616b1b309489fef1848f1b976b1837ecd5ab2a99
Author: Stefan Seyfried <se...@tuxbox-git.slipkontur.de>
Date:   Thu Jan 16 19:41:28 2014 +0100

    XMLTreeNode::AddNode: fix logic error (in unused branch)
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/misc/libs/libxmltree/xmltree.cpp b/misc/libs/libxmltree/xmltree.cpp
index 3fdc97b..89e0084 100644
--- a/misc/libs/libxmltree/xmltree.cpp
+++ b/misc/libs/libxmltree/xmltree.cpp
@@ -204,7 +204,7 @@ void XMLTreeNode::AddNode(XMLTreeNode *node, addmode mode)
   {
     case ADD_NEIGHBOUR:
       n=this;
-
+      break;
     case ADD_CHILD:
       n=child;
   }

commit 244ac84bed746f4da84f7761a2ca4633d7d8851e
Author: Stefan Seyfried <se...@tuxbox-git.slipkontur.de>
Date:   Thu Jan 16 19:36:07 2014 +0100

    XML_Parser::storeAtts: don't leak in case of realloc failure
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/misc/libs/libxmltree/xmlparse.cpp 
b/misc/libs/libxmltree/xmlparse.cpp
index d98990e..8e62d6c 100644
--- a/misc/libs/libxmltree/xmlparse.cpp
+++ b/misc/libs/libxmltree/xmlparse.cpp
@@ -114,7 +114,8 @@ XML_Parser::XML_Parser(const XML_Char *encodingName)
   tagStack=0;
   freeTagList=0;
   attsSize=INIT_ATTS_SIZE;
-  atts=new ATTRIBUTE[attsSize];
+  /* must not realloc stuff allocated with new[] */
+  atts=(ATTRIBUTE *)malloc(attsSize * sizeof(ATTRIBUTE));
   dataBuf=new XML_Char[INIT_DATA_BUF_SIZE];
   groupSize=0;
   groupConnector=0;
@@ -134,7 +135,7 @@ XML_Parser::XML_Parser(const XML_Char *encodingName)
     poolDestroy(&tempPool);
     poolDestroy(&temp2Pool);
 
-    if (atts) delete[] atts;
+    if (atts) free(atts);
     if (dataBuf) delete[] dataBuf;
 
     return;
@@ -186,7 +187,7 @@ XML_Parser::~XML_Parser()
   poolDestroy(&temp2Pool);
   dtdDestroy(&dtd);
 
-  delete[] atts;
+  free(atts);
   free(groupConnector);
   free(buffer);
   delete[] dataBuf;
@@ -1082,9 +1083,11 @@ enum XML_Error XML_Parser::storeAtts(const ENCODING 
*enc, const XML_Char *tagNam
 
     attsSize=n+nDefaultAtts+INIT_ATTS_SIZE;
 
-    atts=(ATTRIBUTE *) realloc((void *) atts, attsSize*sizeof(ATTRIBUTE));
+    ATTRIBUTE *newatts = (ATTRIBUTE *) realloc((void *) atts, 
attsSize*sizeof(ATTRIBUTE));
 
-    if (!atts) return XML_ERROR_NO_MEMORY;
+    if (!newatts) return XML_ERROR_NO_MEMORY;
+
+    atts = newatts;
 
     if (n>oldAttsSize) XmlGetAttributes(enc, s, n, atts);
   };

commit 92dbcbfe0db2303c31c600d6de3a11fdb4cf2f34
Author: Stefan Seyfried <se...@tuxbox-git.slipkontur.de>
Date:   Thu Jan 16 19:32:52 2014 +0100

    XML_Parser: initialize variable
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/misc/libs/libxmltree/xmlparse.cpp 
b/misc/libs/libxmltree/xmlparse.cpp
index 348cc36..d98990e 100644
--- a/misc/libs/libxmltree/xmlparse.cpp
+++ b/misc/libs/libxmltree/xmlparse.cpp
@@ -89,6 +89,7 @@ XML_Parser::XML_Parser(const XML_Char *encodingName)
   bufferLim=0;
   declElementType=0;
   declAttributeId=0;
+  declAttributeIsCdata=0;
   declEntity=0;
   declNotationName=0;
   declNotationPublicId=0;

commit b3386eae7c5eea9cda4567f9cd3895bade97c56b
Author: Christian Schuett <gaucho...@hotmail.com>
Date:   Sat Jan 11 19:20:58 2014 +0100

    Neutrino: add possibility to set initial volume
    
    Signed-off-by: Christian Schuett <gaucho...@hotmail.com>
    Signed-off-by: Thilo Graf <d...@novatux.de>

diff --git a/tuxbox/neutrino/daemons/nhttpd/web/Y_Blocks.txt 
b/tuxbox/neutrino/daemons/nhttpd/web/Y_Blocks.txt
index 2e6064c..9ce554c 100644
--- a/tuxbox/neutrino/daemons/nhttpd/web/Y_Blocks.txt
+++ b/tuxbox/neutrino/daemons/nhttpd/web/Y_Blocks.txt
@@ -73,6 +73,7 @@ start-block~video_audio_save_settings
 
{=ini-set:/var/tuxbox/config/neutrino.conf;audio_avs_Control;{=h_audio_avs_Control=}~cache=}
 
{=ini-set:/var/tuxbox/config/neutrino.conf;audio_DolbyDigital;{=audio_DolbyDigital=}~cache=}
 
{=ini-set:/var/tuxbox/config/neutrino.conf;audio_PCMOffset;{=audio_PCMOffset=}~cache=}
+{=ini-set:/var/tuxbox/config/neutrino.conf;audio_initial_volume;{=audio_initial_volume=}~cache=}
 {=ini-set:/var/tuxbox/config/neutrino.conf;audio_step;{=audio_step=}~save=}
 {=ini-set:/var/tuxbox/config/controld.conf;vcroutput;{=h_vcroutput=}~open=}
 {=ini-set:/var/tuxbox/config/controld.conf;videooutput;{=h_videooutput=}~save=}
diff --git a/tuxbox/neutrino/daemons/nhttpd/web/Y_Settings_video_audio.yhtm 
b/tuxbox/neutrino/daemons/nhttpd/web/Y_Settings_video_audio.yhtm
index 55b5f5c..070f5e8 100644
--- a/tuxbox/neutrino/daemons/nhttpd/web/Y_Settings_video_audio.yhtm
+++ b/tuxbox/neutrino/daemons/nhttpd/web/Y_Settings_video_audio.yhtm
@@ -35,6 +35,8 @@ function do_init()
                document.f.audio_avs_Control.selectedIndex = val;
        val = 
"{=ini-get:/var/tuxbox/config/neutrino.conf;audio_PCMOffset;0~cache=}"
                document.f.audio_PCMOffset.value = val;
+       val = 
"{=ini-get:/var/tuxbox/config/neutrino.conf;audio_initial_volume;0~cache=}"
+               document.f.audio_initial_volume.value = val;
        val = "{=ini-get:/var/tuxbox/config/neutrino.conf;audio_step;5~cache=}"
                document.f.audio_step.value = val;
 }
@@ -52,6 +54,10 @@ function do_submit()
        else{
                set_hidden_values();
                show_waitbox(true);
+               if(document.f.audio_initial_volume.value < 0)
+                       document.f.audio_initial_volume.value = 0;
+               else if(document.f.audio_initial_volume.value > 100)
+                       document.f.audio_initial_volume.value = 100;
                document.f.submit();
        }
 }
@@ -175,6 +181,11 @@ function do_submit()
                                        <input type="text" name="audio_step" 
size="2" maxlength="2" title="audio step"/>
                                </td>
                        </tr>
+                       <tr><td>Anfangslautst&auml;rke</td>
+                               <td>
+                                       <input type="text" 
name="audio_initial_volume" size="3" maxlength="3" title="initial volume"/>
+                               </td>
+                       </tr>
                </table>
                <br/>
                <input type="hidden" name="execute" 
value="include-block:Y_Blocks.txt;video_audio_save_settings;nix"/>
diff --git a/tuxbox/neutrino/data/locale/deutsch.locale 
b/tuxbox/neutrino/data/locale/deutsch.locale
index d986b2b..e959463 100644
--- a/tuxbox/neutrino/data/locale/deutsch.locale
+++ b/tuxbox/neutrino/data/locale/deutsch.locale
@@ -138,6 +138,8 @@ audiomenu.avs avs
 audiomenu.avs_control Volume Steuerung
 audiomenu.dolbydigital Dolby Digital Default
 audiomenu.head Audio-Einstellungen
+audiomenu.initial_volume Anfangslautstärke
+audiomenu.initial_volume_restore Letzte Lautstärke
 audiomenu.lirc lirc
 audiomenu.monoleft mono links
 audiomenu.monoright mono rechts
diff --git a/tuxbox/neutrino/data/locale/english.locale 
b/tuxbox/neutrino/data/locale/english.locale
index 8419074..d03aa0f 100644
--- a/tuxbox/neutrino/data/locale/english.locale
+++ b/tuxbox/neutrino/data/locale/english.locale
@@ -138,6 +138,8 @@ audiomenu.avs avs
 audiomenu.avs_control Volume Control
 audiomenu.dolbydigital Dolby Digital as Default
 audiomenu.head Audio Settings
+audiomenu.initial_volume Initial volume
+audiomenu.initial_volume_restore Restore last volume
 audiomenu.lirc lirc
 audiomenu.monoleft mono left
 audiomenu.monoright mono right
diff --git a/tuxbox/neutrino/src/gui/audio_setup.cpp 
b/tuxbox/neutrino/src/gui/audio_setup.cpp
index 2dd8cea..06ef19e 100644
--- a/tuxbox/neutrino/src/gui/audio_setup.cpp
+++ b/tuxbox/neutrino/src/gui/audio_setup.cpp
@@ -168,6 +168,11 @@ int CAudioSetup::showAudioSetup()
        CMenuForwarder *as = new 
CMenuForwarder(LOCALE_AUDIOMENU_VOLUMEBAR_AUDIOSTEPS, true, 
g_settings.audio_step, &audio_step);
        audioSettings->addItem(as);
 
+       // initial volume
+       CMenuOptionNumberChooser *iv = new 
CMenuOptionNumberChooser(LOCALE_AUDIOMENU_INITIAL_VOLUME, 
&g_settings.audio_initial_volume, true, 0, 100, 0, 0, 
LOCALE_AUDIOMENU_INITIAL_VOLUME_RESTORE, NULL, NULL, CRCInput::RC_nokey, "", 
true);
+       iv->setNumberFormat("%d%%");
+       audioSettings->addItem(iv);
+
        int res = audioSettings->exec(NULL, "");
        selected = audioSettings->getSelected();
        delete audioSettings;
diff --git a/tuxbox/neutrino/src/neutrino.cpp b/tuxbox/neutrino/src/neutrino.cpp
index 30bbc81..ed2684b 100644
--- a/tuxbox/neutrino/src/neutrino.cpp
+++ b/tuxbox/neutrino/src/neutrino.cpp
@@ -427,6 +427,7 @@ int CNeutrinoApp::loadSetup()
        //audio
        g_settings.audio_AnalogMode             = configfile.getInt32( 
"audio_AnalogMode"        , 0 );
        g_settings.audio_DolbyDigital           = 
configfile.getBool("audio_DolbyDigital"        , false);
+       g_settings.audio_initial_volume         = configfile.getInt32( 
"audio_initial_volume"    , 0 );
 #ifdef HAVE_DBOX_HARDWARE
        g_settings.audio_avs_Control            = configfile.getInt32( 
"audio_avs_Control", CControld::TYPE_AVS );
        strcpy( g_settings.audio_step,          configfile.getString( 
"audio_step" , "5" ).c_str() );
@@ -1024,6 +1025,7 @@ void CNeutrinoApp::saveSetup()
        //audio
        configfile.setInt32( "audio_AnalogMode" , g_settings.audio_AnalogMode);
        configfile.setBool("audio_DolbyDigital" , 
g_settings.audio_DolbyDigital);
+       configfile.setInt32( "audio_initial_volume" , 
g_settings.audio_initial_volume);
        configfile.setInt32( "audio_avs_Control", g_settings.audio_avs_Control);
        configfile.setString( "audio_PCMOffset" , g_settings.audio_PCMOffset);
        configfile.setString( "audio_step"      , g_settings.audio_step);
@@ -2145,7 +2147,11 @@ int CNeutrinoApp::run(int argc, char **argv)
                g_Zapit->setStandby(false);
 
        int loadSettingsErg = loadSetup();
-       
+
+       // init volume
+       if (obeyStartMode && g_settings.audio_initial_volume > 0)
+               g_Controld->setVolume(g_settings.audio_initial_volume, 
(CControld::volume_type)g_settings.audio_avs_Control);
+
        /* load locales before setting up any fonts to determine whether we 
need a true unicode font */
        bool display_language_selection;
        loadLocale_ret = g_Locale->loadLocale(g_settings.language);
diff --git a/tuxbox/neutrino/src/system/locals.h 
b/tuxbox/neutrino/src/system/locals.h
index 3edafdc..48c2862 100644
--- a/tuxbox/neutrino/src/system/locals.h
+++ b/tuxbox/neutrino/src/system/locals.h
@@ -165,6 +165,8 @@ typedef enum
        LOCALE_AUDIOMENU_AVS_CONTROL,
        LOCALE_AUDIOMENU_DOLBYDIGITAL,
        LOCALE_AUDIOMENU_HEAD,
+       LOCALE_AUDIOMENU_INITIAL_VOLUME,
+       LOCALE_AUDIOMENU_INITIAL_VOLUME_RESTORE,
        LOCALE_AUDIOMENU_LIRC,
        LOCALE_AUDIOMENU_MONOLEFT,
        LOCALE_AUDIOMENU_MONORIGHT,
diff --git a/tuxbox/neutrino/src/system/locals_intern.h 
b/tuxbox/neutrino/src/system/locals_intern.h
index da40beb..f179574 100644
--- a/tuxbox/neutrino/src/system/locals_intern.h
+++ b/tuxbox/neutrino/src/system/locals_intern.h
@@ -165,6 +165,8 @@ const char * locale_real_names[] =
        "audiomenu.avs_control",
        "audiomenu.dolbydigital",
        "audiomenu.head",
+       "audiomenu.initial_volume",
+       "audiomenu.initial_volume_restore",
        "audiomenu.lirc",
        "audiomenu.monoleft",
        "audiomenu.monoright",
diff --git a/tuxbox/neutrino/src/system/settings.h 
b/tuxbox/neutrino/src/system/settings.h
index 411ede6..5ba4f12 100644
--- a/tuxbox/neutrino/src/system/settings.h
+++ b/tuxbox/neutrino/src/system/settings.h
@@ -98,6 +98,7 @@ struct SNeutrinoSettings
        int audio_AnalogMode;
        int audio_DolbyDigital;
        int audio_avs_Control;
+       int audio_initial_volume;
        char audio_step[3];
        char audio_PCMOffset[3];
 

-----------------------------------------------------------------------

Summary of changes:
 misc/libs/libxmltree/xmlparse.cpp                  |   14 ++-
 misc/libs/libxmltree/xmltree.cpp                   |    2 +-
 .../daemons/nhttpd/tuxboxapi/controlapi.cpp        |   12 +-
 .../daemons/nhttpd/tuxboxapi/neutrinoapi.cpp       |    2 +-
 .../daemons/nhttpd/tuxboxapi/neutrinoyparser.cpp   |   10 +-
 tuxbox/neutrino/daemons/nhttpd/web/Y_Blocks.txt    |    1 +
 .../daemons/nhttpd/web/Y_Settings_video_audio.yhtm |   11 ++
 tuxbox/neutrino/daemons/nhttpd/web/Y_Version.txt   |    4 +-
 tuxbox/neutrino/daemons/timerd/timermanager.cpp    |   26 +++--
 tuxbox/neutrino/data/locale/deutsch.locale         |    4 +-
 tuxbox/neutrino/data/locale/english.locale         |    6 +-
 tuxbox/neutrino/src/driver/shutdown_count.cpp      |    1 +
 tuxbox/neutrino/src/driver/shutdown_count.h        |    2 -
 tuxbox/neutrino/src/driver/vcrcontrol.cpp          |   38 ++++---
 tuxbox/neutrino/src/driver/vcrcontrol.h            |    2 +-
 tuxbox/neutrino/src/gui/audio_setup.cpp            |    5 +
 tuxbox/neutrino/src/gui/bookmarkmanager.cpp        |    1 +
 tuxbox/neutrino/src/gui/channellist.cpp            |    2 +-
 tuxbox/neutrino/src/gui/channellist.h              |    2 +-
 tuxbox/neutrino/src/gui/eventlist.cpp              |    2 +-
 tuxbox/neutrino/src/gui/timerlist.cpp              |  113 ++++++++++++++++++--
 tuxbox/neutrino/src/gui/timerlist.h                |    1 +
 tuxbox/neutrino/src/neutrino.cpp                   |   16 ++-
 tuxbox/neutrino/src/system/locals.h                |    4 +-
 tuxbox/neutrino/src/system/locals_intern.h         |    4 +-
 tuxbox/neutrino/src/system/settings.h              |    1 +
 26 files changed, 210 insertions(+), 76 deletions(-)


-- 
Tuxbox-GIT: apps

------------------------------------------------------------------------------
Android&trade; apps run on BlackBerry&reg;10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk
_______________________________________________
Tuxbox-cvs-commits mailing list
Tuxbox-cvs-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tuxbox-cvs-commits

Reply via email to