• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #ifndef FOUNDATION_ACE_FRAMEWORKS_BASE_LOG_FRAME_REPORT_H
17 #define FOUNDATION_ACE_FRAMEWORKS_BASE_LOG_FRAME_REPORT_H
18 
19 #include <string>
20 
21 #include "base/utils/macros.h"
22 #include "base/utils/noncopyable.h"
23 
24 namespace OHOS::Ace {
25 using FrameInitFunc = void (*)();
26 using FrameGetEnableFunc = int (*)();
27 using BeginFlushAnimationFunc = void(*)();
28 using EndFlushAnimationFunc = void(*)();
29 using BeginFlushBuildFunc = void(*)();
30 using EndFlushBuildFunc = void(*)();
31 using BeginFlushLayoutFunc = void(*)();
32 using EndFlushLayoutFunc = void(*)();
33 using BeginFlushRenderFunc = void(*)();
34 using EndFlushRenderFunc = void(*)();
35 using BeginFlushRenderFinishFunc = void(*)();
36 using EndFlushRenderFinishFunc = void(*)();
37 using BeginProcessPostFlushFunc = void(*)();
38 using BeginListFlingFunc = void(*)();
39 using EndListFlingFunc = void(*)();
40 
41 class ACE_EXPORT FrameReport final {
42 public:
43     static FrameReport& GetInstance();
44     void Init();
45     int GetEnable();
46     void BeginFlushAnimation();
47     void EndFlushAnimation();
48 
49     void BeginFlushBuild();
50     void EndFlushBuild();
51     void BeginFlushLayout();
52     void EndFlushLayout();
53     void BeginFlushRender();
54     void EndFlushRender();
55     void BeginFlushRenderFinish();
56     void EndFlushRenderFinish();
57     void BeginProcessPostFlush();
58     void BeginListFling();
59     void EndListFling();
60 
61 private:
62     FrameReport();
63     ~FrameReport();
64     bool LoadLibrary();
65     void CloseLibrary();
66     void *LoadSymbol(const char *symName);
67     int GetFrameReportEnable();
68     void *frameSchedHandle_ = nullptr;
69     bool frameSchedSoLoaded_ = false;
70 
71     ACE_EXPORT FrameInitFunc frameInitFunc_ = nullptr;
72     ACE_EXPORT FrameGetEnableFunc frameGetEnableFunc_ = nullptr;
73     ACE_EXPORT BeginFlushAnimationFunc beginFlushAnimationFunc_ = nullptr;
74     ACE_EXPORT EndFlushAnimationFunc endFlushAnimationFunc_ = nullptr;
75     ACE_EXPORT BeginFlushBuildFunc beginFlushBuildFunc_ = nullptr;
76     ACE_EXPORT EndFlushBuildFunc endFlushBuildFunc_ = nullptr;
77     ACE_EXPORT BeginFlushLayoutFunc beginFlushLayoutFunc_ = nullptr;
78     ACE_EXPORT EndFlushLayoutFunc endFlushLayoutFunc_ = nullptr;
79     ACE_EXPORT BeginFlushRenderFunc beginFlushRenderFunc_ = nullptr;
80     ACE_EXPORT EndFlushRenderFunc endFlushRenderFunc_ = nullptr;
81     ACE_EXPORT BeginFlushRenderFinishFunc beginFlushRenderFinishFunc_ = nullptr;
82     ACE_EXPORT EndFlushRenderFinishFunc endFlushRenderFinishFunc_ = nullptr;
83     ACE_EXPORT BeginProcessPostFlushFunc beginProcessPostFunc_ = nullptr;
84     ACE_EXPORT BeginListFlingFunc beginListFlingFunc_ = nullptr;
85     ACE_EXPORT EndListFlingFunc endListFlingFunc_ = nullptr;
86 };
87 }
88 #endif // FOUNDATION_ACE_FRAMEWORKS_BASE_LOG_FRAME_REPORT_H
89