diff --git a/src/gui/screensaver.cpp b/src/gui/screensaver.cpp index fc98bcd3f..d4b4934df 100644 --- a/src/gui/screensaver.cpp +++ b/src/gui/screensaver.cpp @@ -298,8 +298,12 @@ void CScreenSaver::paint() { if (scr_clock) { - scr_clock->Stop(); scr_clock->kill(); + scr_clock->allowPaint(false); + if (g_settings.screensaver_mode == SCR_MODE_IMAGE){ + delete scr_clock; + scr_clock = NULL; + } } if (g_settings.screensaver_mode == SCR_MODE_IMAGE && v_bg_files.empty()) m_frameBuffer->paintBackground(); @@ -342,6 +346,7 @@ void CScreenSaver::paint() int x_random = rand() % ((g_settings.screen_EndX - w_cl - g_settings.screen_StartX) + 1) + g_settings.screen_StartX; int y_random = rand() % ((g_settings.screen_EndY - h_cl - g_settings.screen_StartY) + 1) + g_settings.screen_StartY; scr_clock->setPos(x_random, y_random); + scr_clock->allowPaint(true); if (!scr_clock->isRun()) scr_clock->Start();