From 6bc3d7c10966edfef766e46806012d1bb71e1c5d Mon Sep 17 00:00:00 2001 From: Thilo Graf Date: Wed, 5 Feb 2020 22:03:12 +0100 Subject: [PATCH] screensaver: ensure clean paint of unscaled images --- src/gui/screensaver.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/gui/screensaver.cpp b/src/gui/screensaver.cpp index 49dc7fb96..db227a398 100644 --- a/src/gui/screensaver.cpp +++ b/src/gui/screensaver.cpp @@ -347,7 +347,7 @@ void CScreenSaver::paint() dprintf(DEBUG_INFO, "[CScreenSaver] %s - %d : %s\n", __func__, __LINE__, v_bg_files.at(index).c_str()); - m_frameBuffer->showFrame(v_bg_files.at(index), CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_IMAGE); + m_frameBuffer->showFrame(v_bg_files.at(index), CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_IMAGE_UNSCALED); handleRadioText(g_settings.screensaver_mode_text); @@ -386,6 +386,7 @@ void CScreenSaver::paint() #endif m_frameBuffer->showFrame("blackscreen.jpg", CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_CALLBACK | CFrameBuffer::SHOW_FRAME_FALLBACK_MODE_BLACKSCREEN); #endif + handleRadioText(g_settings.screensaver_mode_text); if (scr_clock) @@ -445,12 +446,9 @@ void CScreenSaver::handleRadioText(bool enable_paint) if (!g_RadiotextWin) return; - if (g_RadiotextWin->isPainted() || g_settings.screensaver_mode == SCR_MODE_IMAGE) - { - g_RadiotextWin->hide(); - g_RadiotextWin->clearSavedScreen(); - } - else + g_RadiotextWin->clearSavedScreen(); + + if (g_settings.screensaver_mode != SCR_MODE_IMAGE) g_RadiotextWin->kill(/*COL_BLACK*/); //ensure black paintBackground before repaint //check position and size, use only possible available screen size @@ -471,6 +469,8 @@ void CScreenSaver::handleRadioText(bool enable_paint) if (scr_clock) scr_clock->cl_sl_show.unblock(); } + + m_frameBuffer->OnFallbackShowFrame.connect(sigc::mem_fun(g_RadiotextWin, &CRadioTextGUI::hide)); } void CScreenSaver::hideRadioText()