[Tizen] Add performance logs in WindowBase and System (ecore_wl2)
[platform/core/uifw/dali-adaptor.git] / dali / internal / window-system / tizen-wayland / ecore-wl2 / window-system-ecore-wl2.cpp
1 /*
2  * Copyright (c) 2023 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 // INTERNAL HEADERS
19 #include <dali/devel-api/adaptor-framework/keyboard.h>
20 #include <dali/internal/system/common/time-service.h>
21 #include <dali/internal/window-system/common/window-system.h>
22
23 // EXTERNAL_HEADERS
24 #include <Ecore_Wl2.h>
25 #include <dali/integration-api/debug.h>
26
27 #define START_DURATION_CHECK()                               \
28   uint32_t durationMilliSeconds = static_cast<uint32_t>(-1); \
29   uint32_t startTime, endTime;                               \
30   startTime = TimeService::GetMilliSeconds();
31
32 #define FINISH_DURATION_CHECK(functionName)                                             \
33   endTime              = TimeService::GetMilliSeconds();                                \
34   durationMilliSeconds = endTime - startTime;                                           \
35   if(durationMilliSeconds > 0)                                                          \
36   {                                                                                     \
37     DALI_LOG_DEBUG_INFO("%s : duration [%u ms]\n", functionName, durationMilliSeconds); \
38   }
39
40 namespace Dali
41 {
42 namespace Internal
43 {
44 namespace Adaptor
45 {
46 namespace WindowSystem
47 {
48 namespace
49 {
50 static int32_t gScreenWidth  = 0;
51 static int32_t gScreenHeight = 0;
52 } // unnamed namespace
53
54 void Initialize()
55 {
56   ecore_wl2_init();
57 }
58
59 void Shutdown()
60 {
61   ecore_wl2_shutdown();
62 }
63
64 void GetScreenSize(int32_t& width, int32_t& height)
65 {
66   if(gScreenWidth == 0 || gScreenHeight == 0)
67   {
68     Ecore_Wl2_Display* display = ecore_wl2_display_connect(NULL);
69     if(display)
70     {
71       START_DURATION_CHECK();
72       ecore_wl2_display_screen_size_get(display, &gScreenWidth, &gScreenHeight);
73       FINISH_DURATION_CHECK("ecore_wl2_display_screen_size_get");
74
75       DALI_ASSERT_ALWAYS((gScreenWidth > 0) && "screen width is 0");
76       DALI_ASSERT_ALWAYS((gScreenHeight > 0) && "screen height is 0");
77     }
78   }
79   width  = gScreenWidth;
80   height = gScreenHeight;
81 }
82
83 void UpdateScreenSize()
84 {
85   Ecore_Wl2_Display* display = ecore_wl2_display_connect(NULL);
86   if(display)
87   {
88     START_DURATION_CHECK();
89     ecore_wl2_display_screen_size_get(display, &gScreenWidth, &gScreenHeight);
90     FINISH_DURATION_CHECK("ecore_wl2_display_screen_size_get");
91   }
92 }
93
94 bool SetKeyboardRepeatInfo(float rate, float delay)
95 {
96   Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(ecore_wl2_connected_display_get(NULL));
97   return ecore_wl2_input_keyboard_repeat_set(input, static_cast<double>(rate), static_cast<double>(delay));
98 }
99
100 bool GetKeyboardRepeatInfo(float& rate, float& delay)
101 {
102   Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(ecore_wl2_connected_display_get(NULL));
103   double           rateVal, delayVal;
104   bool             ret = ecore_wl2_input_keyboard_repeat_get(input, &rateVal, &delayVal);
105   rate                 = static_cast<float>(rateVal);
106   delay                = static_cast<float>(delayVal);
107
108   return ret;
109 }
110
111 } // namespace WindowSystem
112
113 } // namespace Adaptor
114
115 } // namespace Internal
116
117 } // namespace Dali
118
119 #pragma GCC diagnostic pop