[Commits] : Tuxbox-GIT: apps branch master updated. CVS-Final-602-g44d20e9
Tuxbox Sources
Brought to you by:
dbt1
|
From: GetAway <tux...@ne...> - 2015-06-17 14:03:15
|
Project "Tuxbox-GIT: apps":
The branch, master has been updated
via 44d20e94dd472e749809105d6f0a0aa3038292e1 (commit)
from d936ee9b40bbca32cbf577af8b8257ae0fe7beb3 (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 44d20e94dd472e749809105d6f0a0aa3038292e1
Author: GetAway <get...@t-...>
Date: Wed Jun 17 16:02:32 2015 +0200
sectionsd: move adjtime back to rcinput
cuz sometime the infobar freezed at startup,
when there is a time jump. So it works not
as expected and I revert it.
Signed-off-by: GetAway <get...@t-...>
diff --git a/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp b/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp
index 24a8cdc..30fc113 100644
--- a/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp
+++ b/tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp
@@ -83,7 +83,7 @@
#include "SIsections.hpp"
#include "SIlanguage.hpp"
-#define SECTIONSD_VERSION "1.349"
+#define SECTIONSD_VERSION "1.350"
// 60 Minuten Zyklus...
#define TIME_EIT_SCHEDULED_PAUSE 60 * 60
@@ -170,7 +170,6 @@ static long secondsExtendedTextCache;
//static long oldEventsAre = 60*60L; // 2h (sometimes want to know something about current/last movie)
static long oldEventsAre;
static int scanning = 1;
-static long long timediff;
std::string epg_filter_dir = "/var/tuxbox/config/zapit/epgfilter.xml";
static bool epg_filter_is_whitelist = false;
@@ -6823,47 +6822,6 @@ static void parseDescriptors(const char *des, unsigned len, const char *countryC
}
*/
-static void setSystemTime(time_t tim)
-{
- struct timeval tv;
- struct tm t;
- time_t now = time(NULL);
- struct tm *tmTime = localtime_r(&now, &t);
-
- gettimeofday(&tv, NULL);
- timediff = (long long)(tim * 1000000 - (tv.tv_usec + tv.tv_sec * 1000000));
- char tbuf[26];
- ctime_r(&tim, tbuf);
- xprintf("[%sThread] timediff %lld, current: %02d.%02d.%04d %02d:%02d:%02d, dvb: %s", "time", timediff,
- tmTime->tm_mday, tmTime->tm_mon+1, tmTime->tm_year+1900,
- tmTime->tm_hour, tmTime->tm_min, tmTime->tm_sec, tbuf);
-
-
- if (timediff == 0) /* very unlikely... :-) */
- return;
-
- time_t diff_time = tim - tv.tv_sec;
- if (timeset && abs(diff_time) < 120) { /* abs() is int */
- struct timeval oldd;
- tv.tv_sec = time_t(timediff / 1000000LL);
- tv.tv_usec = suseconds_t(timediff % 1000000LL);
- if (adjtime(&tv, &oldd))
- xprintf("adjtime(%d, %d) failed: %m\n", (int)tv.tv_sec, (int)tv.tv_usec);
- else {
- xprintf("difference is < 120s (%lds), using adjtime(%d, %d). oldd(%d, %d)\n", diff_time,
- (int)tv.tv_sec, (int)tv.tv_usec, (int)oldd.tv_sec, (int)oldd.tv_usec);
- timediff = 0;
- return;
- }
- }
-
- if (timeset)
- xprintf("[%sThread] difference is %lds, stepping...\n", "time", diff_time);
- tv.tv_sec = tim;
- tv.tv_usec = 0;
- if (settimeofday(&tv, NULL) < 0)
- perror("[sectionsd] settimeofday");
-}
static void setTimeSet(void)
{
@@ -6873,13 +6831,6 @@ static void setTimeSet(void)
pthread_mutex_unlock(&timeIsSetMutex );
}
-static void sendTimeEvent(void)
-{
- if (timediff)
- eventServer->sendEvent(CSectionsdClient::EVT_TIMESET, CEventServer::INITID_SECTIONSD, &timediff, sizeof(timediff));
- setTimeSet();
-}
-
static void *timeThread(void *)
{
UTC_t UTC;
@@ -6890,6 +6841,7 @@ static void *timeThread(void *)
struct timeval now;
bool time_ntp = false;
bool success = true;
+ long long timediff;
try
{
@@ -6900,18 +6852,26 @@ static void *timeThread(void *)
while(1)
{
+ timediff = 0;
if (bTimeCorrect == true){ // sectionsd started with parameter "-tc"
if (first_time == true) { // only do this once!
- sendTimeEvent();
+ time_t actTime;
+ actTime=time(NULL);
+ setTimeSet();
+ eventServer->sendEvent(CSectionsdClient::EVT_TIMESET, CEventServer::INITID_SECTIONSD, &actTime, sizeof(actTime) );
printf("[timeThread] Time is already set by system, no further timeThread work!\n");
break;
}
}
+
else if ( ntpenable && system( ntp_system_cmd.c_str() ) == 0)
{
+ time_t actTime;
+ actTime=time(NULL);
first_time = false;
time_ntp = true;
- sendTimeEvent();
+ setTimeSet();
+ eventServer->sendEvent(CSectionsdClient::EVT_TIMESET, CEventServer::INITID_SECTIONSD, &actTime, sizeof(actTime) );
}
else if (scanning && dvb_time_update)
{
@@ -6932,9 +6892,19 @@ static void *timeThread(void *)
}
}
}
- setSystemTime(tim);
+
+ struct tm tmTime;
+ time_t actTime = time(NULL);
+ localtime_r(&actTime, &tmTime);
+ struct timeval lt;
+ gettimeofday(<, NULL);
+ timediff = (long long)tim * 1000000LL - (lt.tv_usec + lt.tv_sec * 1000000LL);
+ char tbuf[26];
+ ctime_r(&tim, tbuf);
+ xprintf("[%sThread] timediff %lld, current: %02d.%02d.%04d %02d:%02d:%02d, dvb: %s", "time", timediff, tmTime.tm_mday, tmTime.tm_mon+1, tmTime.tm_year+1900, tmTime.tm_hour, tmTime.tm_min, tmTime.tm_sec, tbuf);
time_ntp= false;
- sendTimeEvent();
+ setTimeSet();
+ eventServer->sendEvent(CSectionsdClient::EVT_TIMESET, CEventServer::INITID_SECTIONSD, &tim, sizeof(tim));
}
}
diff --git a/tuxbox/neutrino/src/driver/rcinput.cpp b/tuxbox/neutrino/src/driver/rcinput.cpp
index acf2bf9..540a3a3 100644
--- a/tuxbox/neutrino/src/driver/rcinput.cpp
+++ b/tuxbox/neutrino/src/driver/rcinput.cpp
@@ -1311,7 +1311,6 @@ void CRCInput::getMsg_us(neutrino_msg_t *msg, neutrino_msg_data_t *data, unsigne
{
case CSectionsdClient::EVT_TIMESET:
{
-#if 0
gettimeofday(&tv, NULL);
long long timeOld = tv.tv_usec + tv.tv_sec * 1000000LL;
long long timediff;
@@ -1337,7 +1336,7 @@ void CRCInput::getMsg_us(neutrino_msg_t *msg, neutrino_msg_data_t *data, unsigne
tv.tv_usec = timediff % 1000000LL;
if (adjtime(&tv, &oldd))
perror("adjtime");
- printf("difference is %ld s (< 120s), using adjtime(%d, %d). oldd(%d, %d)\n", diff_time,
+ printf("difference is < 120s (%lds), using adjtime(%d, %d). oldd(%d, %d)\n", diff_time,
(int)tv.tv_sec, (int)tv.tv_usec, (int)oldd.tv_sec, (int)oldd.tv_usec);
}
else
@@ -1350,17 +1349,15 @@ void CRCInput::getMsg_us(neutrino_msg_t *msg, neutrino_msg_data_t *data, unsigne
delete [] p;
p = new unsigned char[sizeof(long long)];
*(long long*) p = timeNew - timeOld;
-#endif
- printf("[neutrino] CSectionsdClient::EVT_TIMESET: timediff %lld \n", *(long long*) p);
- /* FIXME what this code really do ? */
+
if ((long long)last_keypress > *(long long*)p)
last_keypress += *(long long *)p;
-#if 0 // Timer anpassen
+ // Timer anpassen
for (std::vector<timer>::iterator e = timers.begin(); e != timers.end(); ++e)
if (e->correct_time)
e->times_out += *(long long*) p;
-#endif
+
*msg = NeutrinoMessages::EVT_TIMESET;
*data = (neutrino_msg_data_t) p;
dont_delete_p = true;
-----------------------------------------------------------------------
Summary of changes:
tuxbox/neutrino/daemons/sectionsd/sectionsd.cpp | 78 +++++++----------------
tuxbox/neutrino/src/driver/rcinput.cpp | 11 +--
2 files changed, 28 insertions(+), 61 deletions(-)
--
Tuxbox-GIT: apps
|