From aaeb5fc0433af7b7d96f931d58ce8ee3233d80fc Mon Sep 17 00:00:00 2001 From: Yunchan Cho Date: Wed, 1 May 2013 13:17:58 +0900 Subject: [PATCH] Change pause/resume regarding update timer [Issue#] N/A [Problem] When a livebox is paused, its timer regarding updating is deleted, not freezed [Cause] In this case, web-provider has deleted the timer. [Solution] web-provider pauses(resumes) the timer when it receives pause(resume) event of a livebox Change-Id: Id419fc9f8b165223e7948ee222342601d8ac7f7c --- src/Core/Box.cpp | 8 ++------ src/Core/BoxUpdateTimer.cpp | 18 +++++++++++++++++- src/Core/BoxUpdateTimer.h | 2 ++ src/Core/Util/ITimer.h | 2 ++ 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/Core/Box.cpp b/src/Core/Box.cpp index 2e51dab..cefcce6 100644 --- a/src/Core/Box.cpp +++ b/src/Core/Box.cpp @@ -140,7 +140,7 @@ bool Box::resume() try { m_currentTab = true; - m_updateTimer->start(); + m_updateTimer->resume(); m_view->resumeBox(); } catch (...) { return false; @@ -159,7 +159,7 @@ bool Box::pause(bool background) if (!background) { m_currentTab = false; } - m_updateTimer->stop(); + m_updateTimer->pause(); m_view->pauseBox(); } catch (...) { return false; @@ -219,10 +219,6 @@ bool Box::update() { LogD("enter"); - if (!m_currentTab) { - return false; - } - // reload box m_boxBuffer->startCanvasUpdate(); RenderInfoPtr renderInfo = makeRenderInfo(renderTypeUpdate); m_view->showBox(renderInfo); diff --git a/src/Core/BoxUpdateTimer.cpp b/src/Core/BoxUpdateTimer.cpp index f2ed775..b503f89 100644 --- a/src/Core/BoxUpdateTimer.cpp +++ b/src/Core/BoxUpdateTimer.cpp @@ -21,7 +21,7 @@ #include #include "BoxUpdateTimer.h" -#define UPDATE_TIME_MIN 10.0 +#define UPDATE_TIME_MIN 60.0 BoxUpdateTimer::BoxUpdateTimer(float period, Ecore_Task_Cb callback, void* data) : m_period(period) @@ -43,6 +43,10 @@ void BoxUpdateTimer::start() return; } + if (m_timer) { + stop(); + } + m_timer = ecore_timer_add(m_period, m_callback, m_data); } @@ -52,6 +56,18 @@ void BoxUpdateTimer::stop() m_timer = NULL; } +void BoxUpdateTimer::resume() +{ + LogD("enter"); + ecore_timer_thaw(m_timer); +} + +void BoxUpdateTimer::pause() +{ + LogD("enter"); + ecore_timer_freeze(m_timer); +} + void BoxUpdateTimer::restart() { if (m_timer) { diff --git a/src/Core/BoxUpdateTimer.h b/src/Core/BoxUpdateTimer.h index e5e5582..655dd51 100644 --- a/src/Core/BoxUpdateTimer.h +++ b/src/Core/BoxUpdateTimer.h @@ -31,6 +31,8 @@ class BoxUpdateTimer: public ITimer { }; void start(); void stop(); + void resume(); + void pause(); void restart(); void setPeriod(float period); ~BoxUpdateTimer(); diff --git a/src/Core/Util/ITimer.h b/src/Core/Util/ITimer.h index 7362b94..c6595cb 100644 --- a/src/Core/Util/ITimer.h +++ b/src/Core/Util/ITimer.h @@ -26,6 +26,8 @@ class ITimer { public: virtual void start() = 0; virtual void stop() = 0; + virtual void resume() = 0; + virtual void pause() = 0; virtual void restart() = 0; virtual void setPeriod(float period) = 0; -- 2.7.4