[Tizen] Call RequestUpdateOnce in OnTimeTick
[platform/core/uifw/dali-adaptor.git] / adaptors / wearable / watch-application-impl.cpp
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // CLASS HEADER
19 #include "watch-application-impl.h"
20 #include <style-monitor.h>
21
22 namespace Dali
23 {
24
25 namespace Internal
26 {
27
28 namespace Adaptor
29 {
30
31 WatchApplicationPtr WatchApplication::New(
32   int* argc,
33   char **argv[],
34   const std::string& stylesheet,
35   Dali::WatchApplication::WINDOW_MODE windowMode)
36 {
37   WatchApplicationPtr watch ( new WatchApplication (argc, argv, stylesheet, windowMode ) );
38   return watch;
39 }
40
41 WatchApplication::WatchApplication( int* argc, char** argv[], const std::string& stylesheet, Dali::Application::WINDOW_MODE windowMode )
42 : Application(argc, argv, stylesheet, windowMode, PositionSize(), Framework::WATCH),
43   mState( UNINITIALIZED ),
44   mNeedForceRender( false )
45 {
46   Dali::StyleMonitor::Get().SetIgnoreGlobalFontSizeChange(1);
47 }
48
49 WatchApplication::~WatchApplication()
50 {
51 }
52
53 void WatchApplication::OnInit()
54 {
55   Application::OnInit();
56
57   Dali::Adaptor::Get().SetRenderRefreshRate( 2 ); // make 30 fps for watch applications
58
59   mState = INITIALIZED;
60 }
61
62 void WatchApplication::OnTerminate()
63 {
64   Application::OnTerminate();
65
66   mState = TERMINATED;
67 }
68
69 void WatchApplication::OnResume()
70 {
71   Application::OnResume();
72
73   mState = RESUMED;
74   mNeedForceRender = true;
75 }
76
77 void WatchApplication::OnPause()
78 {
79   Application::OnPause();
80
81   mState = PAUSED;
82   mNeedForceRender = true;
83 }
84
85 void WatchApplication::OnTimeTick(WatchTime& time)
86 {
87   Dali::WatchApplication watch(this);
88   mTickSignal.Emit( watch, time );
89
90   if( mNeedForceRender )
91   {
92     // This is a pre-resume scenario. All rendering engine of tizen SHOULD forcely update once at this time.
93     Internal::Adaptor::Adaptor::GetImplementation( GetAdaptor() ).RequestUpdateOnce();
94     mNeedForceRender = false;
95   }
96
97   // A watch application will queue messages to update the UI in the signal emitted above
98   // Process these immediately to avoid a blinking issue where the old time is briefly visible
99   CoreEventInterface& eventInterface = Internal::Adaptor::Adaptor::GetImplementation( GetAdaptor() );
100   eventInterface.ProcessCoreEvents();
101 }
102
103 void WatchApplication::OnAmbientTick(WatchTime& time)
104 {
105   Dali::WatchApplication watch(this);
106   mAmbientTickSignal.Emit( watch, time );
107
108   // A watch application will queue messages to update the UI in the signal emitted above
109   // Process these immediately to avoid a blinking issue where the old time is briefly visible
110   CoreEventInterface& eventInterface = Internal::Adaptor::Adaptor::GetImplementation( GetAdaptor() );
111   eventInterface.ProcessCoreEvents();
112 }
113
114 void WatchApplication::OnAmbientChanged(bool ambient)
115 {
116   Dali::WatchApplication watch(this);
117   mAmbientChangeSignal.Emit( watch, ambient );
118 }
119
120 } // namespace Adaptor
121
122 } // namespace Internal
123
124 } // namespace Dali