From a85e4df4102b60e4eaa477ad4e9400e16ea576e5 Mon Sep 17 00:00:00 2001 From: "[CST] Focus" Date: Sat, 2 Jun 2012 15:02:24 +0400 Subject: [PATCH] gui/infoviewer_bb.cpp: change ca status display logic, comment thread start, reasons: on zap showIcon_CA_Status was called at least 5! times, including full cabar paint, while channel camap changed only once, so should be enough to paint bar once, paint grey icons if zap not complete, and paint icons on event from zapit; thread only to speedup resolution display for some 0.5-1 seconds sounds redundant. feel free to discuss in mail-list Origin commit data ------------------ Commit: https://github.com/neutrino-images/ni-neutrino/commit/ab9e712e1e1060efb246412155fed8c67d55dcb6 Author: [CST] Focus Date: 2012-06-02 (Sat, 02 Jun 2012) --- src/gui/infoviewer_bb.cpp | 52 +++++++++++++++++++++++++++++---------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/src/gui/infoviewer_bb.cpp b/src/gui/infoviewer_bb.cpp index 4a9eefcf9..29060db68 100644 --- a/src/gui/infoviewer_bb.cpp +++ b/src/gui/infoviewer_bb.cpp @@ -79,10 +79,12 @@ CInfoViewerBB::CInfoViewerBB() scrambledNoSig = false; scrambledNoSigSave = false; scrambledT = 0; +#if 0 if(!scrambledT) { pthread_create(&scrambledT, NULL, scrambledThread, (void*) this) ; pthread_detach(scrambledT); } +#endif Init(); } @@ -366,6 +368,7 @@ void CInfoViewerBB::paintshowButtonBar() tmp_bbButtonInfoText[i] = ""; } g_InfoViewer->sec_timer_id = g_RCInput->addTimer(1*1000*1000, false); + if (g_settings.casystem_display < 2) paintCA_bar(0,0); @@ -381,7 +384,11 @@ void CInfoViewerBB::paintshowButtonBar() showIcon_VTXT(); showIcon_DD(); showIcon_16_9(); +#if 0 scrambledCheck(true); +#endif + showIcon_CA_Status(0); + showIcon_Resolution(); showIcon_Tuner(); showSysfsHdd(); } @@ -441,7 +448,7 @@ void CInfoViewerBB::showIcon_16_9() if (!is_visible) return; if ((g_InfoViewer->aspectRatio == 0) || ( g_RemoteControl->current_PIDs.PIDs.vpid == 0 ) || (g_InfoViewer->aspectRatio != videoDecoder->getAspectRatio())) { - if ( g_RemoteControl->current_PIDs.PIDs.vpid > 0 ) { + if (g_InfoViewer->chanready && g_RemoteControl->current_PIDs.PIDs.vpid > 0 ) { g_InfoViewer->aspectRatio = videoDecoder->getAspectRatio(); } else @@ -456,7 +463,12 @@ void CInfoViewerBB::showIcon_Resolution() if ((!is_visible) || (g_settings.infobar_show_res == 2)) //show resolution icon is off return; const char *icon_name = NULL; - if ((scrambledNoSig) || ((!fta) && (scrambledErr))) { +#if 0 + if ((scrambledNoSig) || ((!fta) && (scrambledErr))) +#else + if (!g_InfoViewer->chanready || videoDecoder->getBlank()) +#endif + { icon_name = NEUTRINO_ICON_RESOLUTION_000; } else { int xres, yres, framerate; @@ -635,25 +647,24 @@ void CInfoViewerBB::paint_ca_icons(int caid, char * icon, int &icon_space_offset } } } - if (( caid & 0xFF00 ) == 0x1700) - caid = 0x0600; + caid &= 0xFF00; - if (icon_offset[icon_map[( caid & 0xFF00 )].first] == 0) + if (icon_offset[icon_map[caid].first] == 0) return; if (g_settings.casystem_display == 0) { - px = endx - (icon_offset[icon_map[( caid & 0xFF00 )].first] - icon_space ); + px = endx - (icon_offset[icon_map[caid].first] - icon_space ); } else { - icon_space_offset += icon_sizeW[icon_map[( caid & 0xFF00 )].first]; + icon_space_offset += icon_sizeW[icon_map[caid].first]; px = endx - icon_space_offset; icon_space_offset += 4; } if (px) { - snprintf(buf, sizeof(buf), "%s_%s", icon_map[( caid & 0xFF00 )].second, icon); + snprintf(buf, sizeof(buf), "%s_%s", icon_map[caid].second, icon); if ((px >= (endx-8)) || (px <= 0)) printf("#####[%s:%d] Error paint icon %s, px: %d, py: %d, endx: %d, icon_offset: %d\n", - __FUNCTION__, __LINE__, buf, px, py, endx, icon_offset[icon_map[( caid & 0xFF00 )].first]); + __FUNCTION__, __LINE__, buf, px, py, endx, icon_offset[icon_map[caid].first]); else frameBuffer->paintIcon(buf, px, py); } @@ -662,10 +673,26 @@ void CInfoViewerBB::paint_ca_icons(int caid, char * icon, int &icon_space_offset void CInfoViewerBB::showIcon_CA_Status(int notfirst) { int caids[] = { 0x600, 0x0100, 0x0500, 0x1800, 0xB00, 0xD00, 0x900, 0x2600, 0x4a00, 0x0E00 }; + const char * white = (char *) "white"; + const char * yellow = (char *) "yellow"; + int icon_space_offset = 0; if (g_settings.casystem_display == 3) return; + if(!g_InfoViewer->chanready) { + if (g_settings.casystem_display == 2) { + fta = true; + showOne_CAIcon(); + } + else if(g_settings.casystem_display == 0) { + for (int i = 0; i < (int)(sizeof(caids)/sizeof(int)); i++) { + paint_ca_icons(caids[i], (char *) white, icon_space_offset); + } + } + return; + } + CZapitChannel * channel = CZapit::getInstance()->GetCurrentChannel(); if(!channel) return; @@ -676,15 +703,14 @@ void CInfoViewerBB::showIcon_CA_Status(int notfirst) return; } - const char * white = (char *) "white"; - const char * yellow = (char *) "yellow"; - static int icon_space_offset = 0; - if(!notfirst) { +#if 0 + static int icon_space_offset = 0; if ((g_settings.casystem_display == 1) && (icon_space_offset)) { paintCA_bar(0,icon_space_offset); icon_space_offset = 0; } +#endif for (int i = 0; i < (int)(sizeof(caids)/sizeof(int)); i++) { bool found = false; for(casys_map_iterator_t it = channel->camap.begin(); it != channel->camap.end(); ++it) {