diff --git a/lib/libdvbsub/dvbsubtitle.cpp b/lib/libdvbsub/dvbsubtitle.cpp index 151594e6e..0ca219b3b 100644 --- a/lib/libdvbsub/dvbsubtitle.cpp +++ b/lib/libdvbsub/dvbsubtitle.cpp @@ -176,6 +176,10 @@ void cDvbSubtitleBitmaps::Draw(int &min_x, int &min_y, int &max_x, int &max_y) if(max_y < (yoff + nh)) max_y = yoff + nh; } +#ifdef HAVE_SPARK_HARDWARE + if (Count()) /* sync framebuffer */ + CFrameBuffer::getInstance()->blit(); +#endif // if(Count()) // dbgconverter("cDvbSubtitleBitmaps::Draw: finish, min/max screen: x=% d y= %d, w= %d, h= %d\n", min_x, min_y, max_x-min_x, max_y-min_y); // dbgconverter("\n"); diff --git a/src/driver/fb_window.cpp b/src/driver/fb_window.cpp index 780776aeb..0555b17a7 100644 --- a/src/driver/fb_window.cpp +++ b/src/driver/fb_window.cpp @@ -58,7 +58,10 @@ CFBWindow::~CFBWindow(void) if (private_data != NULL) { if (((CPrivateData *)private_data)->Background != NULL) + { ((CPrivateData *)private_data)->frameBuffer->RestoreScreen(x, y, dx, dy, ((CPrivateData *)private_data)->Background); + ((CPrivateData *)private_data)->frameBuffer->blit(); + } delete[] ((CPrivateData *)private_data)->Background; delete ((CPrivateData *)private_data); private_data = NULL; @@ -68,15 +71,18 @@ CFBWindow::~CFBWindow(void) void CFBWindow::paintBoxRel(const int _x, const int _y, const int _dx, const int _dy, const color_t _col, int radius, int type) { ((CPrivateData *)private_data)->frameBuffer->paintBoxRel(x + _x, y + _y, _dx, _dy, _col, radius, type); + ((CPrivateData *)private_data)->frameBuffer->blit(); } bool CFBWindow::paintIcon(const char * const _filename, const int _x, const int _y, const int _h, const color_t _offset) { ((CPrivateData *)private_data)->frameBuffer->paintIcon(_filename, x + _x, y + _y, _h, _offset); + ((CPrivateData *)private_data)->frameBuffer->blit(); return 0; } void CFBWindow::RenderString(const font_t _font, const int _x, const int _y, const int _width, const char * const _text, const color_t _color, const int _boxheight, const bool _utf8_encoded) { ((Font *)_font)->RenderString(x + _x, y + _y, _width, _text, _color, _boxheight, _utf8_encoded); + ((CPrivateData *)private_data)->frameBuffer->blit(); } diff --git a/src/driver/pictureviewer/pictureviewer.cpp b/src/driver/pictureviewer/pictureviewer.cpp index 2dab2184c..6fdb3f364 100644 --- a/src/driver/pictureviewer/pictureviewer.cpp +++ b/src/driver/pictureviewer/pictureviewer.cpp @@ -411,6 +411,7 @@ void CPictureViewer::showBusy (int sx, int sy, int width, char r, char g, char b m_busy_width = width; m_busy_cpp = cpp; cs_free_uncached (fb_buffer); + CFrameBuffer::getInstance()->blit(); // dbout("Show Busy}\n"); } @@ -431,6 +432,7 @@ void CPictureViewer::hideBusy () free (m_busy_buffer); m_busy_buffer = NULL; } + CFrameBuffer::getInstance()->blit(); // dbout("Hide Busy}\n"); } void CPictureViewer::Cleanup () diff --git a/src/gui/audioplayer.cpp b/src/gui/audioplayer.cpp index 6ca7746a2..59f909572 100644 --- a/src/gui/audioplayer.cpp +++ b/src/gui/audioplayer.cpp @@ -873,6 +873,7 @@ int CAudioPlayerGui::show() //paintHead(); //paintLCD(); } + m_frameBuffer->blit(); } hide(); @@ -1486,6 +1487,7 @@ void CAudioPlayerGui::hide() m_width + ConnectLineBox_Width+2, m_height + 2 - m_title_height); clearItemID3DetailsLine(); m_frameBuffer->paintBackgroundBoxRel(m_x, m_y, m_width, m_title_height); + m_frameBuffer->blit(); m_visible = false; } } @@ -1637,6 +1639,7 @@ void CAudioPlayerGui::paintHead() m_frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_MUTE, xpos - iw, ypos, m_theight); } #endif + m_frameBuffer->blit(); } //------------------------------------------------------------------------ @@ -1749,6 +1752,7 @@ const struct button_label ScondLineButtons[2] = ::paintButtons(m_x, top, m_width, 2, AudioPlayerButtons[2], m_width, m_buttonHeight); } } + m_frameBuffer->blit(); } //------------------------------------------------------------------------ void CAudioPlayerGui::paintInfo() @@ -1825,6 +1829,7 @@ void CAudioPlayerGui::paintInfo() updateTimes(true); } + m_frameBuffer->blit(); } //------------------------------------------------------------------------ @@ -1851,6 +1856,7 @@ void CAudioPlayerGui::paint() paintFoot(); paintInfo(); + m_frameBuffer->blit(); m_visible = true; } @@ -1940,6 +1946,7 @@ void CAudioPlayerGui::paintItemID3DetailsLine (int pos) { m_frameBuffer->paintBackgroundBoxRel(m_x, ypos2, m_width, m_info_height); } + m_frameBuffer->blit(); } //------------------------------------------------------------------------ @@ -2170,6 +2177,7 @@ void CAudioPlayerGui::updateMetaData(bool screen_saver) g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL] ->RenderString(m_x + xstart, m_y + 4 + 2*m_fheight + m_sheight, m_width- 2*xstart, m_metainfo, COL_MENUCONTENTSELECTED); + m_frameBuffer->blit(); } } //------------------------------------------------------------------------ @@ -2230,6 +2238,7 @@ void CAudioPlayerGui::updateTimes(const bool force) w2+4, play_time, COL_MENUCONTENTSELECTED); } } + m_frameBuffer->blit(); } if ((updatePlayed || updateTotal) && m_time_total != 0) { @@ -2356,6 +2365,7 @@ bool CAudioPlayerGui::getNumericInput(neutrino_msg_t& msg, int& val) { m_frameBuffer->paintBoxRel(x1 - 7, y1 - h - 5, w + 14, h + 10, COL_MENUCONTENT_PLUS_6); m_frameBuffer->paintBoxRel(x1 - 4, y1 - h - 3, w + 8, h + 6, COL_MENUCONTENTSELECTED_PLUS_0); g_Font[SNeutrinoSettings::FONT_TYPE_CHANNEL_NUM_ZAP]->RenderString(x1, y1, w + 1, str, COL_MENUCONTENTSELECTED, 0); + m_frameBuffer->blit(); while (true) { g_RCInput->getMsg(&msg, &data, 100); diff --git a/src/gui/bedit/bouqueteditor_bouquets.cpp b/src/gui/bedit/bouqueteditor_bouquets.cpp index 61a71b530..0dae1ff74 100644 --- a/src/gui/bedit/bouqueteditor_bouquets.cpp +++ b/src/gui/bedit/bouqueteditor_bouquets.cpp @@ -194,6 +194,7 @@ void CBEBouquetWidget::paintFoot() void CBEBouquetWidget::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height+ButtonHeight); + frameBuffer->blit(); } int CBEBouquetWidget::exec(CMenuTarget* parent, const std::string & /*actionKey*/) @@ -219,6 +220,7 @@ int CBEBouquetWidget::exec(CMenuTarget* parent, const std::string & /*actionKey* paintHead(); paint(); paintFoot(); + frameBuffer->blit(); bouquetsChanged = false; @@ -457,6 +459,7 @@ int CBEBouquetWidget::exec(CMenuTarget* parent, const std::string & /*actionKey* CNeutrinoApp::getInstance()->handleMsg( msg, data ); // kein canceling... } + frameBuffer->blit(); } hide(); return res; diff --git a/src/gui/bedit/bouqueteditor_channels.cpp b/src/gui/bedit/bouqueteditor_channels.cpp index 023395e9c..9a3bc3515 100644 --- a/src/gui/bedit/bouqueteditor_channels.cpp +++ b/src/gui/bedit/bouqueteditor_channels.cpp @@ -260,6 +260,7 @@ void CBEChannelWidget::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height+footerHeight+info_height); clearItem2DetailsLine (); + frameBuffer->blit(); } int CBEChannelWidget::exec(CMenuTarget* parent, const std::string & /*actionKey*/) @@ -286,6 +287,7 @@ int CBEChannelWidget::exec(CMenuTarget* parent, const std::string & /*actionKey* paintHead(); paint(); paintFoot(); + frameBuffer->blit(); channelsChanged = false; @@ -458,6 +460,7 @@ int CBEChannelWidget::exec(CMenuTarget* parent, const std::string & /*actionKey* { CNeutrinoApp::getInstance()->handleMsg( msg, data ); } + frameBuffer->blit(); } hide(); return res; diff --git a/src/gui/bedit/bouqueteditor_chanselect.cpp b/src/gui/bedit/bouqueteditor_chanselect.cpp index 16051daba..351d3e744 100644 --- a/src/gui/bedit/bouqueteditor_chanselect.cpp +++ b/src/gui/bedit/bouqueteditor_chanselect.cpp @@ -137,6 +137,7 @@ void CBEChannelSelectWidget::paintItem(uint32_t itemNr, int paintNr, bool pselec if(Channels[itemNr]->scrambled) frameBuffer->paintIcon(NEUTRINO_ICON_SCRAMBLED, x+width- 15 - 28, ypos, fheight); } + frameBuffer->blit(); } void CBEChannelSelectWidget::onOkKeyPressed() @@ -187,6 +188,7 @@ const struct button_label CBEChannelSelectButtons[] = void CBEChannelSelectWidget::paintFoot() { ::paintButtons(x, y + (height-footerHeight), width, 2, CBEChannelSelectButtons, width, footerHeight); + frameBuffer->blit(); #if 0 frameBuffer->paintIcon(NEUTRINO_ICON_BUTTON_OKAY, x+width- 3* ButtonWidth+ 8, y+height+1); diff --git a/src/gui/bookmarkmanager.cpp b/src/gui/bookmarkmanager.cpp index 89061c1f0..6291d50c5 100644 --- a/src/gui/bookmarkmanager.cpp +++ b/src/gui/bookmarkmanager.cpp @@ -352,6 +352,7 @@ const CBookmark * CBookmarkManager::getBookmark(CMenuTarget* parent) res = menu_return::RETURN_EXIT_ALL; } } + frameBuffer->blit(); } hide(); @@ -406,6 +407,7 @@ void CBookmarkManager::paintItem(int pos) CVFD::getInstance()->showMenuText(1, theBookmark.getUrl(), -1, true); // UTF-8 } } + frameBuffer->blit(); } //------------------------------------------------------------------------ @@ -415,6 +417,7 @@ void CBookmarkManager::hide() if (visible) { frameBuffer->paintBackgroundBoxRel(x, y, width, height+ info_height+ 5); + frameBuffer->blit(); visible = false; } } @@ -481,5 +484,6 @@ void CBookmarkManager::paint() paintFoot(); visible = true; + frameBuffer->blit(); } diff --git a/src/gui/bouquetlist.cpp b/src/gui/bouquetlist.cpp index 7c4a46f5f..e2f92bacf 100644 --- a/src/gui/bouquetlist.cpp +++ b/src/gui/bouquetlist.cpp @@ -323,6 +323,7 @@ int CBouquetList::show(bool bShowChannelList) paintHead(); paint(); + frameBuffer->blit(); int oldselected = selected; int firstselected = selected+ 1; @@ -511,6 +512,7 @@ int CBouquetList::show(bool bShowChannelList) res = -2; } }; + frameBuffer->blit(); } hide(); @@ -527,6 +529,7 @@ int CBouquetList::show(bool bShowChannelList) void CBouquetList::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height+10); + frameBuffer->blit(); } void CBouquetList::paintItem(int pos) diff --git a/src/gui/channellist.cpp b/src/gui/channellist.cpp index 2bbba0666..a553e02c9 100644 --- a/src/gui/channellist.cpp +++ b/src/gui/channellist.cpp @@ -573,6 +573,7 @@ int CChannelList::show() paintHead(); paint(); + frameBuffer->blit(); gettimeofday(&t2, NULL); fprintf(stderr, "CChannelList::show(): %llu ms to paint channellist\n", @@ -931,6 +932,7 @@ int CChannelList::show() res = - 2; } } + frameBuffer->blit(); } hide(); @@ -959,6 +961,7 @@ void CChannelList::hide() { frameBuffer->paintBackgroundBoxRel(x, y, width, height+ info_height+ 5); clearItem2DetailsLine (); + frameBuffer->blit(); } bool CChannelList::showInfo(int pos, int epgpos) @@ -1360,6 +1363,7 @@ int CChannelList::numericZap(int key) valstr[i+ 1]= 0; g_Font[SNeutrinoSettings::FONT_TYPE_CHANNEL_NUM_ZAP]->RenderString(ox+7+ i*((sx-14)>>2), oy+sy-3, sx, &valstr[i], COL_INFOBAR); } + frameBuffer->blit(); showInfo(chn- 1); lastchan= chn; diff --git a/src/gui/dboxinfo.cpp b/src/gui/dboxinfo.cpp index 32acd252f..77f0ebb88 100644 --- a/src/gui/dboxinfo.cpp +++ b/src/gui/dboxinfo.cpp @@ -82,6 +82,7 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) fader.StartFadeIn(); paint(); + frameBuffer->blit(); //int res = g_RCInput->messageLoop(); neutrino_msg_t msg; @@ -139,6 +140,7 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) } } } + frameBuffer->blit(); } hide(); @@ -149,6 +151,7 @@ int CDBoxInfoWidget::exec(CMenuTarget* parent, const std::string &) void CDBoxInfoWidget::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height); + frameBuffer->blit(); } static void bytes2string(uint64_t bytes, char *result, size_t len) diff --git a/src/gui/epgplus.cpp b/src/gui/epgplus.cpp index 3a2fd9440..dec4e6b31 100644 --- a/src/gui/epgplus.cpp +++ b/src/gui/epgplus.cpp @@ -815,6 +815,7 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu this->footer->paintButtons (buttonLabels, sizeof (buttonLabels) / sizeof (button_label)); this->paint(); + frameBuffer->blit(); uint64_t timeoutEnd = CRCInput::calcTimeoutEnd (g_settings.timing[SNeutrinoSettings::TIMING_CHANLIST]); bool loop = true; @@ -1148,6 +1149,7 @@ int EpgPlus::exec (CChannelList * pchannelList, int selectedChannelIndex, CBouqu loop = false; else if (this->refreshFooterButtons) this->footer->paintButtons (buttonLabels, sizeof (buttonLabels) / sizeof (button_label)); + frameBuffer->blit(); } this->hide(); @@ -1186,6 +1188,7 @@ EpgPlus::TCChannelEventEntries::const_iterator EpgPlus::getSelectedEvent() const void EpgPlus::hide() { this->frameBuffer->paintBackgroundBoxRel (this->usableScreenX, this->usableScreenY, this->usableScreenWidth, this->usableScreenHeight); + frameBuffer->blit(); } void EpgPlus::paintChannelEntry (int position) diff --git a/src/gui/epgview.cpp b/src/gui/epgview.cpp index 973d385b4..a825e7623 100644 --- a/src/gui/epgview.cpp +++ b/src/gui/epgview.cpp @@ -683,6 +683,7 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start g_Font[SNeutrinoSettings::FONT_TYPE_EPG_DATE]->RenderString(sx+ ox- botboxheight+ 8, sy+ oy- 3, widthr, ">", COL_MENUCONTENT + 3); } + frameBuffer->blit(); if ( doLoop ) { neutrino_msg_t msg; @@ -911,6 +912,7 @@ int CEpgData::show(const t_channel_id channel_id, uint64_t a_id, time_t* a_start } } } + frameBuffer->blit(); } hide(); fader.Stop(); @@ -928,6 +930,7 @@ void CEpgData::hide() } frameBuffer->paintBackgroundBoxRel(sx, sy, ox, oy); + frameBuffer->blit(); showTimerEventBar (false); } @@ -1100,8 +1103,10 @@ void CEpgData::showTimerEventBar (bool pshow) frameBuffer->paintBackgroundBoxRel(sx,y,ox,h); // hide only? - if (! pshow) + if (! pshow) { + frameBuffer->blit(); return; + } frameBuffer->paintBoxRel(sx,y,ox,h, COL_INFOBAR_SHADOW_PLUS_1, RADIUS_LARGE, CORNER_BOTTOM);//round @@ -1112,6 +1117,7 @@ void CEpgData::showTimerEventBar (bool pshow) else ::paintButtons(x, y, 0, 1, &EpgButtons[1], aw, h); + frameBuffer->blit(); #if 0 // Button: Timer Record & Channelswitch if (g_settings.recording_type != CNeutrinoApp::RECORDING_OFF) diff --git a/src/gui/eventlist.cpp b/src/gui/eventlist.cpp index b80e383a6..bcc3125a4 100644 --- a/src/gui/eventlist.cpp +++ b/src/gui/eventlist.cpp @@ -307,6 +307,7 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam } paint(channel_id); showFunctionBar(true, channel_id); + frameBuffer->blit(); int oldselected = selected; @@ -651,6 +652,7 @@ int EventList::exec(const t_channel_id channel_id, const std::string& channelnam res = menu_return::RETURN_EXIT_ALL; } } + frameBuffer->blit(); } hide(); @@ -662,6 +664,7 @@ void EventList::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height); showFunctionBar (false, 0); + frameBuffer->blit(); } @@ -788,6 +791,7 @@ void EventList::paintItem(unsigned int pos, t_channel_id channel_idI) } + frameBuffer->blit(); } void EventList::paintHead(std::string _channelname, std::string _channelname_prev, std::string _channelname_next) { diff --git a/src/gui/filebrowser.cpp b/src/gui/filebrowser.cpp index 4c94289ed..6b9b629f7 100644 --- a/src/gui/filebrowser.cpp +++ b/src/gui/filebrowser.cpp @@ -855,6 +855,7 @@ bool CFileBrowser::exec(const char * const dirname) ChangeDir(name); paint(); paintFoot(); + frameBuffer->blit(); int oldselected = selected; @@ -1115,6 +1116,7 @@ bool CFileBrowser::exec(const char * const dirname) loop = false; } } + frameBuffer->blit(); } hide(); @@ -1221,6 +1223,7 @@ void CFileBrowser::addRecursiveDir(CFileList * re_filelist, std::string rpath, b void CFileBrowser::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height); + frameBuffer->blit(); } //------------------------------------------------------------------------ diff --git a/src/gui/imageinfo.cpp b/src/gui/imageinfo.cpp index 5807eabd4..8e5777402 100644 --- a/src/gui/imageinfo.cpp +++ b/src/gui/imageinfo.cpp @@ -121,6 +121,7 @@ int CImageInfo::exec(CMenuTarget* parent, const std::string &) //paint_pig( width-170, y, 215, 170); paint_pig (width - width/3 - 10, y + 10, width/3, height/3); + frameBuffer->blit(); neutrino_msg_t msg; @@ -148,6 +149,7 @@ int CImageInfo::exec(CMenuTarget* parent, const std::string &) { CNeutrinoApp::getInstance()->handleMsg( msg, data ); } + frameBuffer->blit(); } hide(); diff --git a/src/gui/infoclock.cpp b/src/gui/infoclock.cpp index 6449d5fea..cea5dae8e 100644 --- a/src/gui/infoclock.cpp +++ b/src/gui/infoclock.cpp @@ -70,6 +70,7 @@ void CInfoClock::paintTime( bool show_dot) int x_diff = (time_width - g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME]->getRenderWidth(timestr)) / 2; frameBuffer->paintBoxRel(clock_x, y, time_width, time_height, COL_MENUCONTENT_PLUS_0, RADIUS_SMALL); g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_CHANNAME]->RenderString(clock_x + x_diff, y + digit_h + digit_offset + ((time_height - digit_h) / 2), time_width, timestr, COL_MENUCONTENT); + frameBuffer->blit(); } void* CInfoClock::TimerProc(void *arg) @@ -112,5 +113,6 @@ void CInfoClock::StopClock() pthread_cancel(thrTimer); thrTimer = 0; frameBuffer->paintBackgroundBoxRel(clock_x, y, time_width, time_height); + frameBuffer->blit(); } } diff --git a/src/gui/infoviewer.cpp b/src/gui/infoviewer.cpp index f5640ceca..e6afbba04 100644 --- a/src/gui/infoviewer.cpp +++ b/src/gui/infoviewer.cpp @@ -815,10 +815,13 @@ void CInfoViewer::showTitle (const int ChanNum, const std::string & Channel, con showIcon_RadioText(false); } + if (!calledFromNumZap) { //loop(fadeValue, show_dot , fadeIn); loop(show_dot); } + else + frameBuffer->blit(); aspectRatio = 0; fileplay = 0; } @@ -855,6 +858,7 @@ void CInfoViewer::loop(bool show_dot) neutrino_msg_data_t data; while (!(res & (messages_return::cancel_info | messages_return::cancel_all))) { + frameBuffer->blit(); g_RCInput->getMsgAbsoluteTimeout (&msg, &data, &timeoutEnd); if (msg == (neutrino_msg_t) g_settings.key_screenshot) { @@ -1223,6 +1227,7 @@ void CInfoViewer::showMotorMoving (int duration) void CInfoViewer::killRadiotext() { frameBuffer->paintBackgroundBox(rt_x, rt_y, rt_w, rt_h); + frameBuffer->blit(); } void CInfoViewer::showRadiotext() @@ -1249,8 +1254,10 @@ void CInfoViewer::showRadiotext() if (g_Radiotext->RT_Text[i][0] != '\0') lines++; } if (lines == 0) + { frameBuffer->paintBackgroundBox(rt_x, rt_y, rt_w, rt_h); - + frameBuffer->blit(); + } if (g_Radiotext->RT_MsgShow) { if (g_Radiotext->S_RtOsdTitle == 1) { @@ -1265,6 +1272,7 @@ void CInfoViewer::showRadiotext() frameBuffer->paintBoxRel(rt_x+SHADOW_OFFSET, rt_y+SHADOW_OFFSET, rt_dx, rt_dy, COL_INFOBAR_SHADOW_PLUS_0, RADIUS_LARGE, CORNER_TOP); frameBuffer->paintBoxRel(rt_x, rt_y, rt_dx, rt_dy, COL_INFOBAR_PLUS_0, RADIUS_LARGE, CORNER_TOP); g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->RenderString(rt_x+10, rt_y+ 30, rt_dx-20, stext[0], COL_INFOBAR, 0, RTisIsUTF); // UTF-8 + frameBuffer->blit(); } // yoff = 17; ii = 1; @@ -1311,6 +1319,7 @@ void CInfoViewer::showRadiotext() for (int i = g_Radiotext->S_RtOsdRows-1; i > ind; i--) g_Font[SNeutrinoSettings::FONT_TYPE_INFOBAR_SMALL]->RenderString(rts_x, rts_y + (ii++)*rt_dy, rts_dx, g_Radiotext->RT_Text[i], COL_INFOBAR, 0, RTisIsUTF); // UTF-8 } + frameBuffer->blit(); } #if 0 // + RT-Plus or PS-Text = 2 rows @@ -2010,6 +2019,7 @@ void CInfoViewer::killTitle() bottom += InfoHeightY_Info; //printf("killTitle(%d, %d, %d, %d)\n", BoxStartX, BoxStartY, BoxEndX+ SHADOW_OFFSET-BoxStartX, bottom-BoxStartY); frameBuffer->paintBackgroundBox(BoxStartX, BoxStartY, BoxEndX+ SHADOW_OFFSET, bottom); + frameBuffer->blit(); if (g_settings.radiotext_enable && g_Radiotext) { g_Radiotext->S_RtOsd = g_Radiotext->haveRadiotext() ? 1 : 0; killRadiotext(); diff --git a/src/gui/motorcontrol.cpp b/src/gui/motorcontrol.cpp index b90670559..db48e128f 100644 --- a/src/gui/motorcontrol.cpp +++ b/src/gui/motorcontrol.cpp @@ -153,6 +153,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) paint(); paintMenu(); paintStatus(); + frameBuffer->blit(); while (!istheend) { @@ -409,6 +410,7 @@ int CMotorControl::exec(CMenuTarget* parent, const std::string &) } } } + frameBuffer->blit(); istheend = (msg == CRCInput::RC_home); } @@ -473,6 +475,7 @@ void CMotorControl::motorStepEast(void) void CMotorControl::hide() { frameBuffer->paintBackgroundBoxRel(x, y, width, height + 20); + frameBuffer->blit(); stopSatFind(); } diff --git a/src/gui/moviebrowser.cpp b/src/gui/moviebrowser.cpp index dea999f72..6d35c8f72 100644 --- a/src/gui/moviebrowser.cpp +++ b/src/gui/moviebrowser.cpp @@ -983,6 +983,7 @@ int CMovieBrowser::exec(const char* path) refreshTitle(); onSetGUIWindow(m_settings.gui); + m_pcWindow->blit(); bool loop = true; bool result; @@ -1037,6 +1038,7 @@ int CMovieBrowser::exec(const char* path) loop = false; } } + m_pcWindow->blit(); if ( msg <= CRCInput::RC_MaxRC ) timeoutEnd = CRCInput::calcTimeoutEnd(timeout); // calcualate next timeout @@ -1262,6 +1264,7 @@ void CMovieBrowser::refreshMovieInfo(void) m_pcWindow->paintHLineRel(lx, flogo_w+2, ly+flogo_h+1, COL_WHITE); } } + m_pcWindow->blit(); } void CMovieBrowser::info_hdd_level(bool paint_hdd) { diff --git a/src/gui/pictureviewer.cpp b/src/gui/pictureviewer.cpp index 35a410184..ec0058dac 100644 --- a/src/gui/pictureviewer.cpp +++ b/src/gui/pictureviewer.cpp @@ -223,6 +223,7 @@ int CPictureViewerGui::show() hide(); update=false; paint(); + frameBuffer->blit(); } if (m_state!=SLIDESHOW) @@ -558,6 +559,7 @@ int CPictureViewerGui::show() loop = false; } } + frameBuffer->blit(); } hide(); diff --git a/src/gui/pluginlist.cpp b/src/gui/pluginlist.cpp index 20dd6520c..09937d78e 100644 --- a/src/gui/pluginlist.cpp +++ b/src/gui/pluginlist.cpp @@ -141,6 +141,7 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) fader.StartFadeIn(); paint(); + frameBuffer->blit(); uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); @@ -248,6 +249,7 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) loop = false; res = menu_return::RETURN_EXIT_ALL; } + frameBuffer->blit(); } hide(); @@ -258,6 +260,7 @@ int CPluginList::exec(CMenuTarget* parent, const std::string & /*actionKey*/) void CPluginList::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width+15,height); + frameBuffer->blit(); } void CPluginList::paintItem(int pos) diff --git a/src/gui/scan.cpp b/src/gui/scan.cpp index 37add87e1..6c2e27008 100644 --- a/src/gui/scan.cpp +++ b/src/gui/scan.cpp @@ -263,6 +263,8 @@ int CScanTs::exec(CMenuTarget* /*parent*/, const std::string & actionKey) tuned = CFrontend::getInstance()->getStatus(); paint(test); + frameBuffer->blit(); + /* go */ if(test) { testFunc(); @@ -308,6 +310,7 @@ int CScanTs::exec(CMenuTarget* /*parent*/, const std::string & actionKey) } while (!(msg == CRCInput::RC_timeout)); showSNR(); // FIXME commented until scan slowdown will be solved + frameBuffer->blit(); } /* to join scan thread */ g_Zapit->stopScan(); @@ -324,6 +327,7 @@ int CScanTs::exec(CMenuTarget* /*parent*/, const std::string & actionKey) //paintLine(xpos2, ypos_frequency, xpos_frequency, text); frameBuffer->paintBoxRel(x, y, width, hheight, COL_MENUHEAD_PLUS_0, RADIUS_LARGE, CORNER_TOP); g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE]->RenderString(xpos1, y + hheight, width, text, COL_MENUHEAD, 0, true); // UTF-8 + frameBuffer->blit(); uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(0xFFFF); do { g_RCInput->getMsgAbsoluteTimeout(&msg, &data, &timeoutEnd); diff --git a/src/gui/screensetup.cpp b/src/gui/screensetup.cpp index c004b564d..d735e65d2 100644 --- a/src/gui/screensetup.cpp +++ b/src/gui/screensetup.cpp @@ -91,6 +91,7 @@ int CScreenSetup::exec(CMenuTarget* parent, const std::string &) y_coord[1] = g_settings.screen_EndY; paint(); + frameBuffer->blit(); selected = 0; @@ -219,7 +220,7 @@ int CScreenSetup::exec(CMenuTarget* parent, const std::string &) res = menu_return::RETURN_EXIT_ALL; } } - + frameBuffer->blit(); } hide(); @@ -231,6 +232,7 @@ void CScreenSetup::hide() int w = (int) frameBuffer->getScreenWidth(true); int h = (int) frameBuffer->getScreenHeight(true); frameBuffer->paintBackgroundBox(0, 0, w, h); + frameBuffer->blit(); } void CScreenSetup::paintBorder( int pselected ) diff --git a/src/gui/streaminfo2.cpp b/src/gui/streaminfo2.cpp index d48b5423c..2977e8091 100644 --- a/src/gui/streaminfo2.cpp +++ b/src/gui/streaminfo2.cpp @@ -145,6 +145,7 @@ int CStreamInfo2::doSignalStrengthLoop () int dheight = g_Font[font_info]->getHeight (); maxb = minb = lastb = tmp_rate = 0; ts_setup (); + frameBuffer->blit(); while (1) { neutrino_msg_data_t data; @@ -255,6 +256,7 @@ int CStreamInfo2::doSignalStrengthLoop () if (msg > CRCInput::RC_MaxRC && msg != CRCInput::RC_timeout) { CNeutrinoApp::getInstance ()->handleMsg (msg, data); } + frameBuffer->blit(); } if(sigscale){ delete sigscale; @@ -272,11 +274,13 @@ void CStreamInfo2::hide () { videoDecoder->Pig(-1, -1, -1, -1); frameBuffer->paintBackgroundBoxRel (0, 0, max_width, max_height); + frameBuffer->blit(); } void CStreamInfo2::paint_pig (int px, int py, int w, int h) { frameBuffer->paintBackgroundBoxRel (px,py, w, h); + frameBuffer->blit(); printf("CStreamInfo2::paint_pig x %d y %d w %d h %d\n", px, py, w, h); videoDecoder->Pig(px, py, w, h, frameBuffer->getScreenWidth(true), frameBuffer->getScreenHeight(true)); } @@ -427,7 +431,7 @@ void CStreamInfo2::SignalRenderStr(unsigned int oldvalue, unsigned int value, in int fw = g_Font[font_small]->getRenderWidth(str); frameBuffer->paintBoxRel(_x, _y - sheight + 5, fw, sheight -1, COL_MENUHEAD_PLUS_0); sprintf(str,"%6u",value); - g_Font[font_small]->RenderString(_x, _y + 5, width - x, str, COL_INFOBAR, 0, true); + g_Font[font_small]->RenderString(_x, _y + 5, width - _x, str, COL_INFOBAR, 0, true); } void CStreamInfo2::paint (int /*mode*/) diff --git a/src/gui/timeosd.cpp b/src/gui/timeosd.cpp index 3e3345bbb..c79bb6484 100644 --- a/src/gui/timeosd.cpp +++ b/src/gui/timeosd.cpp @@ -109,6 +109,7 @@ void CTimeOSD::update(time_t time_show) strftime(cDisplayTime, 9, "%T", gmtime(&time_show)); frameBuffer->paintBoxRel(m_xend - m_width - t1, m_y, m_width, m_height, color1,RADIUS_SMALL); g_Font[TIMEOSD_FONT]->RenderString(m_xend - m_width - (t1/2), m_y + m_height, m_width, cDisplayTime, color2); + frameBuffer->blit(); } void CTimeOSD::updatePos(short runningPercent) @@ -120,6 +121,7 @@ void CTimeOSD::updatePos(short runningPercent) runningPercent = 0; timescale->paintProgressBar2(m_xstart, m_y, runningPercent); + frameBuffer->blit(); } void CTimeOSD::update(int position, int duration) @@ -149,6 +151,7 @@ void CTimeOSD::hide() frameBuffer->paintBackgroundBoxRel(m_xend - m_width - t1, m_y, m_width, m_height); timescale->reset(); frameBuffer->paintBackgroundBoxRel(m_xstart-2, m_y, 2+BARLEN+2, m_height); //clear border + frameBuffer->blit(); visible=false; } diff --git a/src/gui/timerlist.cpp b/src/gui/timerlist.cpp index ad6859b6c..07931b26f 100644 --- a/src/gui/timerlist.cpp +++ b/src/gui/timerlist.cpp @@ -484,6 +484,7 @@ int CTimerList::show() updateEvents(); update=false; paint(); + frameBuffer->blit(); } g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd ); @@ -633,6 +634,7 @@ int CTimerList::show() res = menu_return::RETURN_EXIT_ALL; } } + frameBuffer->blit(); } hide(); fader.Stop(); @@ -645,6 +647,7 @@ void CTimerList::hide() if (visible) { frameBuffer->paintBackgroundBoxRel(x, y, width, height+ info_height+ 5); + frameBuffer->blit(); visible = false; } } diff --git a/src/gui/widget/colorchooser.cpp b/src/gui/widget/colorchooser.cpp index 58f319069..66a258f9f 100644 --- a/src/gui/widget/colorchooser.cpp +++ b/src/gui/widget/colorchooser.cpp @@ -125,6 +125,7 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &) paint(); setColor(); + frameBuffer->blit(); int selected = 0; @@ -226,6 +227,7 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &) res = menu_return::RETURN_EXIT_ALL; } } + frameBuffer->blit(); } hide(); @@ -239,6 +241,7 @@ int CColorChooser::exec(CMenuTarget* parent, const std::string &) void CColorChooser::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height); + frameBuffer->blit(); } void CColorChooser::paint() diff --git a/src/gui/widget/keychooser.cpp b/src/gui/widget/keychooser.cpp index 7518cd60b..57785e298 100644 --- a/src/gui/widget/keychooser.cpp +++ b/src/gui/widget/keychooser.cpp @@ -117,7 +117,7 @@ int CKeyChooserItem::exec(CMenuTarget* parent, const std::string &) parent->hide(); paint(); - + CFrameBuffer::getInstance()->blit(); g_RCInput->clearRCMsg(); timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings @@ -145,6 +145,7 @@ int CKeyChooserItem::exec(CMenuTarget* parent, const std::string &) void CKeyChooserItem::hide() { CFrameBuffer::getInstance()->paintBackgroundBoxRel(x, y, width, height); + CFrameBuffer::getInstance()->blit(); } void CKeyChooserItem::paint() diff --git a/src/gui/widget/listbox.cpp b/src/gui/widget/listbox.cpp index 1f364a804..a3121d74f 100644 --- a/src/gui/widget/listbox.cpp +++ b/src/gui/widget/listbox.cpp @@ -110,6 +110,7 @@ void CListBox::paintItem(int pos) void CListBox::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height+ButtonHeight); + frameBuffer->blit(); } unsigned int CListBox::getItemCount() @@ -160,6 +161,7 @@ int CListBox::exec(CMenuTarget* parent, const std::string & /*actionKey*/) paintHead(); paint(); paintFoot(); + frameBuffer->blit(); bool loop=true; modified = false; @@ -266,6 +268,7 @@ int CListBox::exec(CMenuTarget* parent, const std::string & /*actionKey*/) CNeutrinoApp::getInstance()->handleMsg( msg, data ); // kein canceling... } + frameBuffer->blit(); } hide(); diff --git a/src/gui/widget/menue.cpp b/src/gui/widget/menue.cpp index 208c03c31..1e366f987 100644 --- a/src/gui/widget/menue.cpp +++ b/src/gui/widget/menue.cpp @@ -508,6 +508,8 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) saveScreen(); } paint(); + frameBuffer->blit(); + int retval = menu_return::RETURN_REPAINT; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); @@ -716,6 +718,7 @@ int CMenuWidget::exec(CMenuTarget* parent, const std::string &) timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); } } + frameBuffer->blit(); } while ( msg!=CRCInput::RC_timeout ); hide(); @@ -749,6 +752,7 @@ void CMenuWidget::hide() restoreScreen();//FIXME else frameBuffer->paintBackgroundBoxRel(x, y, full_width, full_height); + frameBuffer->blit(); /* setActive() paints item for hidden parent menu, if called from child menu */ for (unsigned int count = 0; count < items.size(); count++) diff --git a/src/gui/widget/msgbox.cpp b/src/gui/widget/msgbox.cpp index 704d7a77e..db2bcee47 100644 --- a/src/gui/widget/msgbox.cpp +++ b/src/gui/widget/msgbox.cpp @@ -512,6 +512,7 @@ bool CMsgBox::hide(void) // delete window // delete m_pcWindow; m_pcWindow->paintBackgroundBoxRel(m_cBoxFrame.iX, m_cBoxFrame.iY, m_cBoxFrame.iWidth, m_cBoxFrame.iHeight); + m_pcWindow->blit(); m_pcWindow = NULL; return (true); } @@ -638,6 +639,7 @@ int CMsgBox::exec( int timeout, int returnDefaultOnTimeout) // show message box paint(); + m_pcWindow->blit(); if (m_pcWindow == NULL) { return res; /* out of memory */ @@ -717,7 +719,7 @@ int CMsgBox::exec( int timeout, int returnDefaultOnTimeout) res = menu_return::RETURN_EXIT_ALL; loop = false; } - + m_pcWindow->blit(); } hide(); diff --git a/src/gui/widget/progresswindow.cpp b/src/gui/widget/progresswindow.cpp index bb0d9128f..971349742 100644 --- a/src/gui/widget/progresswindow.cpp +++ b/src/gui/widget/progresswindow.cpp @@ -86,7 +86,7 @@ void CProgressWindow::showGlobalStatus(const unsigned int prog) } //hintergrund frameBuffer->paintBox(pos, globalstatusY, x+width-10, globalstatusY+10, COL_MENUCONTENT_PLUS_2); - + frameBuffer->blit(); #ifdef VFD_UPDATE CVFD::getInstance()->showProgressBar2(-1,NULL,global_progress); #endif // VFD_UPDATE @@ -112,6 +112,7 @@ void CProgressWindow::showLocalStatus(const unsigned int prog) } //hintergrund frameBuffer->paintBox(pos, localstatusY, x+width-10, localstatusY+10, COL_MENUCONTENT_PLUS_2); + frameBuffer->blit(); #ifdef VFD_UPDATE CVFD::getInstance()->showProgressBar2(local_progress); @@ -123,6 +124,7 @@ void CProgressWindow::showStatusMessageUTF(const std::string & text) statusText = text; frameBuffer->paintBox(x, statusTextY-mheight, x+width, statusTextY, COL_MENUCONTENT_PLUS_0); g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+10, statusTextY, width-20, text, COL_MENUCONTENT, 0, true); // UTF-8 + frameBuffer->blit(); #ifdef VFD_UPDATE CVFD::getInstance()->showProgressBar2(-1,text.c_str()); // set local text in VFD @@ -139,6 +141,7 @@ unsigned int CProgressWindow::getGlobalStatus(void) void CProgressWindow::hide() { frameBuffer->paintBackgroundBoxRel(x,y, width,height); + frameBuffer->blit(); } void CProgressWindow::paint() @@ -173,6 +176,7 @@ int CProgressWindow::exec(CMenuTarget* parent, const std::string & /*actionKey*/ parent->hide(); } paint(); + frameBuffer->blit(); return menu_return::RETURN_REPAINT; } diff --git a/src/gui/widget/stringinput.cpp b/src/gui/widget/stringinput.cpp index 2d7a4344a..6d3284ec4 100644 --- a/src/gui/widget/stringinput.cpp +++ b/src/gui/widget/stringinput.cpp @@ -381,6 +381,7 @@ int CStringInput::exec( CMenuTarget* parent, const std::string & ) strncpy(oldval, value, size); paint(); + frameBuffer->blit(); uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings ::TIMING_MENU]); @@ -489,6 +490,7 @@ int CStringInput::exec( CMenuTarget* parent, const std::string & ) } } } + frameBuffer->blit(); } hide(); @@ -526,6 +528,7 @@ int CStringInput::handleOthers(const neutrino_msg_t /*msg*/, const neutrino_msg_ void CStringInput::hide() { frameBuffer->paintBackgroundBoxRel(x, y, width, height + footerHeight); + frameBuffer->blit(); } const char * CStringInput::getHint1(void) diff --git a/src/gui/widget/stringinput_ext.cpp b/src/gui/widget/stringinput_ext.cpp index a29e528c0..8c6f99ac0 100644 --- a/src/gui/widget/stringinput_ext.cpp +++ b/src/gui/widget/stringinput_ext.cpp @@ -153,6 +153,7 @@ int CExtendedInput::exec( CMenuTarget* parent, const std::string & ) strcpy(oldval, value); strcpy(dispval, value); paint(); + frameBuffer->blit(); uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings ::TIMING_MENU]); @@ -268,6 +269,7 @@ int CExtendedInput::exec( CMenuTarget* parent, const std::string & ) loop = false; res = menu_return::RETURN_EXIT_ALL; } + frameBuffer->blit(); } hide(); @@ -288,6 +290,7 @@ int CExtendedInput::exec( CMenuTarget* parent, const std::string & ) void CExtendedInput::hide() { frameBuffer->paintBackgroundBoxRel(x, y, width, height); + frameBuffer->blit(); } void CExtendedInput::paint() diff --git a/src/gui/widget/textbox.cpp b/src/gui/widget/textbox.cpp index 52222713b..6dadbcf3f 100644 --- a/src/gui/widget/textbox.cpp +++ b/src/gui/widget/textbox.cpp @@ -420,6 +420,7 @@ void CTextBox::refreshScroll(void) m_cFrameScrollRel.iWidth, m_cFrameScrollRel.iHeight, m_textBackgroundColor); } + frameBuffer->blit(); } void CTextBox::refreshText(void) @@ -448,6 +449,7 @@ void CTextBox::refreshText(void) y+m_cFrame.iY, m_cFrameTextRel.iWidth, m_cLineArray[i].c_str(), COL_MENUCONTENT, 0, true); // UTF-8 } + frameBuffer->blit(); } void CTextBox::scrollPageDown(const int pages) @@ -529,5 +531,6 @@ void CTextBox::hide (void) if(frameBuffer == NULL) return; //TRACE("[CTextBox]->hide \r\n"); frameBuffer->paintBackgroundBoxRel(m_cFrame.iX, m_cFrame.iY, m_cFrame.iWidth, m_cFrame.iHeight); + frameBuffer->blit(); frameBuffer = NULL; }