Merge branch 'multituner' into dvbsi++

This commit is contained in:
[CST] Focus
2012-03-11 16:30:38 +04:00
4 changed files with 34 additions and 124 deletions

View File

@@ -665,26 +665,26 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos)
spaceoffset = 7 * fontW;
//onid
ypos+= sheight;
sprintf((char*) buf, "0x%04x (%i)", si.onid, si.onid);
sprintf((char*) buf, "0x%04X (%i)", si.onid, si.onid);
g_Font[font_small]->RenderString(xpos, ypos, box_width, "ONid:" , COL_INFOBAR, 0, true); // UTF-8
g_Font[font_small]->RenderString(xpos+spaceoffset, ypos, box_width, buf, COL_INFOBAR, 0, true); // UTF-8
//sid
ypos+= sheight;
sprintf((char*) buf, "0x%04x (%i)", si.sid, si.sid);
sprintf((char*) buf, "0x%04X (%i)", si.sid, si.sid);
g_Font[font_small]->RenderString(xpos, ypos, box_width, "Sid:" , COL_INFOBAR, 0, true); // UTF-8
g_Font[font_small]->RenderString(xpos+spaceoffset, ypos, box_width, buf, COL_INFOBAR, 0, true); // UTF-8
//tsid
ypos+= sheight;
sprintf((char*) buf, "0x%04x (%i)", si.tsid, si.tsid);
sprintf((char*) buf, "0x%04X (%i)", si.tsid, si.tsid);
g_Font[font_small]->RenderString(xpos, ypos, box_width, "TSid:" , COL_INFOBAR, 0, true); // UTF-8
g_Font[font_small]->RenderString(xpos+spaceoffset, ypos, box_width, buf, COL_INFOBAR, 0, true); // UTF-8
//pmtpid
ypos+= sheight;
pmt_version = si.pmt_version;
sprintf((char*) buf, "0x%04x (%i) [%i]", si.pmtpid, si.pmtpid,pmt_version);
sprintf((char*) buf, "0x%04X (%i) [%i]", si.pmtpid, si.pmtpid,pmt_version);
g_Font[font_small]->RenderString(xpos, ypos, box_width, "PMTpid:", COL_INFOBAR, 0, true); // UTF-8
g_Font[font_small]->RenderString(xpos+spaceoffset, ypos, box_width, buf, COL_INFOBAR, 0, true); // UTF-8
@@ -692,7 +692,7 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos)
//vpid
ypos+= sheight;
if ( g_RemoteControl->current_PIDs.PIDs.vpid > 0 ){
sprintf((char*) buf, "0x%04x (%i)", g_RemoteControl->current_PIDs.PIDs.vpid, g_RemoteControl->current_PIDs.PIDs.vpid );
sprintf((char*) buf, "0x%04X (%i)", g_RemoteControl->current_PIDs.PIDs.vpid, g_RemoteControl->current_PIDs.PIDs.vpid );
} else {
sprintf((char*) buf, "%s", g_Locale->getText(LOCALE_STREAMINFO_NOT_AVAILABLE));
}
@@ -708,7 +708,7 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos)
unsigned int sw=spaceoffset;
for (unsigned int li= 0; (li<g_RemoteControl->current_PIDs.APIDs.size()) && (li<10); li++)
{
sprintf((char*) buf, "0x%04x (%i)", g_RemoteControl->current_PIDs.APIDs[li].pid, g_RemoteControl->current_PIDs.APIDs[li].pid );
sprintf((char*) buf, "0x%04X (%i)", g_RemoteControl->current_PIDs.APIDs[li].pid, g_RemoteControl->current_PIDs.APIDs[li].pid );
if (li == g_RemoteControl->current_PIDs.PIDs.selected_apid){
g_Font[font_small]->RenderString(xpos+sw, ypos, box_width, buf, COL_MENUHEAD, 0, true); // UTF-8
}
@@ -728,7 +728,7 @@ void CStreamInfo2::paint_techinfo(int xpos, int ypos)
if ( g_RemoteControl->current_PIDs.PIDs.vtxtpid == 0 )
sprintf((char*) buf, "%s", g_Locale->getText(LOCALE_STREAMINFO_NOT_AVAILABLE));
else
sprintf((char*) buf, "0x%04x (%i)", g_RemoteControl->current_PIDs.PIDs.vtxtpid, g_RemoteControl->current_PIDs.PIDs.vtxtpid );
sprintf((char*) buf, "0x%04X (%i)", g_RemoteControl->current_PIDs.PIDs.vtxtpid, g_RemoteControl->current_PIDs.PIDs.vtxtpid );
g_Font[font_small]->RenderString(xpos, ypos, box_width, "VTXTpid:" , COL_INFOBAR, 0, true); // UTF-8
g_Font[font_small]->RenderString(xpos+spaceoffset, ypos, box_width, buf, COL_INFOBAR, 0, true); // UTF-8
if(box_h == 0)

View File

@@ -147,11 +147,13 @@ void * sectionsd_main_thread(void *data);
extern bool timeset; // sectionsd
extern cVideo * videoDecoder;
extern cDemux *videoDemux;
extern cAudio * audioDecoder;
cPowerManager *powerManager;
cCpuFreqManager * cpuFreq;
void stop_daemons(bool stopall = true);
void stop_video(void);
// uncomment if you want to have a "test" menue entry (rasc)
//#define __EXPERIMENTAL_CODE__
@@ -2963,6 +2965,8 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode)
standby.timer_minutes_hi = fp_timer >> 8;;
standby.timer_minutes_lo = fp_timer & 0xFF;
stop_video();
int fd = open("/dev/display", O_RDONLY);
if (fd < 0) {
perror("/dev/display");
@@ -3026,7 +3030,8 @@ void CNeutrinoApp::ExitRun(const bool /*write_si*/, int retcode)
delete funNotifier;
}
//CVFD::getInstance()->ShowText(g_Locale->getText(LOCALE_MAINMENU_REBOOT));
//delete frameBuffer;
stop_video();
#if 0 /* FIXME this next hack to test, until we find real crash on exit reason */
system("/etc/init.d/rcK");
system("/bin/sync");
@@ -3050,7 +3055,7 @@ void CNeutrinoApp::saveEpg()
neutrino_msg_data_t data;
g_Sectionsd->writeSI2XML(g_settings.epg_dir.c_str());
while( true ) {
g_RCInput->getMsg(&msg, &data, 300); // 30 secs..
g_RCInput->getMsg(&msg, &data, 1200); // 120 secs..
if (( msg == CRCInput::RC_timeout ) || (msg == NeutrinoMessages::EVT_SI_FINISHED)) {
//printf("Msg %x timeout %d EVT_SI_FINISHED %x\n", msg, CRCInput::RC_timeout, NeutrinoMessages::EVT_SI_FINISHED);
break;
@@ -3608,9 +3613,9 @@ int CNeutrinoApp::exec(CMenuTarget* parent, const std::string & actionKey)
delete g_fontRenderer;
delete hintBox;
delete frameBuffer;
stop_daemons(true);
stop_video();
/* g_Timerd, g_Zapit and CVFD are used in stop_daemons */
delete g_Timerd;
delete g_Zapit; //do we really need this?
@@ -3726,10 +3731,17 @@ void stop_daemons(bool stopall)
delete powerManager;
}
cs_deregister_messenger();
cs_api_exit();
}
}
void stop_video()
{
delete videoDecoder;
delete videoDemux;
delete CFrameBuffer::getInstance();
cs_api_exit();
}
void sighandler (int signum)
{
signal (signum, SIG_IGN);
@@ -3739,6 +3751,7 @@ void sighandler (int signum)
delete CRecordManager::getInstance();
CNeutrinoApp::getInstance()->saveSetup(NEUTRINO_SETTINGS_FILE);
stop_daemons();
stop_video();
_exit(0);
default:
break;

View File

@@ -47,91 +47,7 @@
//static const char * iso639filename = "/usr/share/iso-codes/iso-639.tab";
static const char * iso639filename = "/share/iso-codes/iso-639.tab";
#if 0
#include <stdlib.h>
#include <stdio.h>
#define ISO639_TABLE_SIZE 489
typedef struct
{
char * iso_639_2_code;
char * name;
} iso639_t;
iso639_t iso639[ISO639_TABLE_SIZE];
int mycompare(const void * a, const void * b)
{
return strcmp(((iso639_t *)a)->iso_639_2_code, ((iso639_t *)b)->iso_639_2_code);
}
void initialize_iso639_map(void)
{
unsigned i = 0;
std::string s, t, v;
std::ifstream in(iso639filename);
if (in.is_open())
{
while (in.peek() == '#')
getline(in, s);
while (in >> s >> t >> v >> std::ws)
{
getline(in, v);
if (i == ISO639_TABLE_SIZE)
{
printf("ISO639 table overflow\n");
goto do_sorting;
}
iso639[i].iso_639_2_code = strdup(s.c_str());
iso639[i].name = strdup(v.c_str());
i++;
if (s != t)
{
if (i == ISO639_TABLE_SIZE)
{
printf("ISO639 table overflow\n");
goto do_sorting;
}
iso639[i].iso_639_2_code = strdup(t.c_str());
// iso639[i].name = strdup(v.c_str());
iso639[i].name = iso639[i - 1].name;
i++;
}
}
if (i != ISO639_TABLE_SIZE)
{
printf("ISO639 table underflow\n");
while(i < ISO639_TABLE_SIZE)
{
iso639[i].iso_639_2_code = iso639[i].name = (char *)iso639filename; // fill with junk
i++;
}
}
do_sorting:
qsort(iso639, ISO639_TABLE_SIZE, sizeof(iso639_t), mycompare);
}
else
printf("Loading %s failed.\n", iso639filename);
}
const char * getISO639Description(const char * const iso)
{
iso639_t tmp;
tmp.iso_639_2_code = (char *)iso;
void * value = bsearch(&tmp, iso639, ISO639_TABLE_SIZE, sizeof(iso639_t), mycompare);
if (value == NULL)
return iso;
else
return ((iso639_t *)value)->name;
}
#else
#define DEFAULT_LOCALE "english"
std::map<std::string, std::string> iso639;
std::map<std::string, std::string> iso639rev;
@@ -166,7 +82,6 @@ const char * getISO639Description(const char * const iso)
else
return it->second.c_str();
}
#endif
CLocaleManager::CLocaleManager()
{
@@ -178,7 +93,7 @@ CLocaleManager::CLocaleManager()
for (unsigned int i = 0; i < (sizeof(locale_real_names)/sizeof(const char *)); i++)
defaultData[i] = (char *)locale_real_names[i];
loadLocale("english", true);
loadLocale(DEFAULT_LOCALE, true);
}
CLocaleManager::~CLocaleManager()
@@ -198,7 +113,14 @@ CLocaleManager::loadLocale_ret_t CLocaleManager::loadLocale(const char * const l
FILE * fd;
char ** loadData = asdefault ? defaultData : localeData;
//initialize_iso639_map();
if(!asdefault && !strcmp(locale, DEFAULT_LOCALE)) {
for (unsigned j = 0; j < (sizeof(locale_real_names)/sizeof(const char *)); j++) {
if (loadData[j] != locale_real_names[j] && loadData[j] != defaultData[j])
free(loadData[j]);
loadData[j] = defaultData[j];
}
return UNICODE_FONT;
}
for (i = 0; i < 2; i++)
{
@@ -278,29 +200,6 @@ CLocaleManager::loadLocale_ret_t CLocaleManager::loadLocale(const char * const l
// printf("i=%d\n", i);
if(i == sizeof(locale_real_names)/sizeof(const char *))
printf("[%s.locale] superfluous entry: %s\n", locale, buf);
#if 0
while (1)
{
j = (i >= (sizeof(locale_real_names)/sizeof(const char *))) ? -1 : strcmp(buf, locale_real_names[i]);
if (j > 0)
{
printf("[%s.locale] missing entry: %s\n", locale, locale_real_names[i]);
i++;
}
else
break;
}
if (j == 0)
{
localeData[i] = strdup(text.c_str());
i++;
}
else
{
printf("[%s.locale] superfluous entry: %s\n", locale, buf);
}
#endif
}
}
fclose(fd);

View File

@@ -2148,8 +2148,6 @@ void CZapit::run()
delete pcrDemux;
delete pmtDemux;
delete audioDecoder;
delete videoDecoder;
delete videoDemux;
delete audioDemux;
INFO("demuxes/decoders deleted");