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