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 using FlushBeginFunc = void (*)(); 41 using FlushEndFunc = void (*)(); 42 using SetFrameParamFunc = void (*)(int, int, int, int); 43 using EnableSelfRenderFunc = void (*)(); 44 using DisableSelfRenderFunc = void (*)(); 45 46 class ACE_EXPORT FrameReport final { 47 public: 48 static FrameReport& GetInstance(); 49 void Init(); 50 int GetEnable(); 51 void BeginFlushAnimation(); 52 void EndFlushAnimation(); 53 54 void BeginFlushBuild(); 55 void EndFlushBuild(); 56 void BeginFlushLayout(); 57 void EndFlushLayout(); 58 void BeginFlushRender(); 59 void EndFlushRender(); 60 void BeginFlushRenderFinish(); 61 void EndFlushRenderFinish(); 62 void BeginProcessPostFlush(); 63 void BeginListFling(); 64 void EndListFling(); 65 void FlushBegin(); 66 void FlushEnd(); 67 void SetFrameParam(int requestId, int load, int schedFrameNum, int value); 68 void EnableSelfRender(); 69 void DisableSelfRender(); 70 71 private: 72 FrameReport(); 73 ~FrameReport(); 74 bool LoadLibrary(); 75 void CloseLibrary(); 76 void* LoadSymbol(const char* symName); 77 int GetFrameReportEnable(); 78 void* frameSchedHandle_ = nullptr; 79 bool frameSchedSoLoaded_ = false; 80 bool enable_ = false; 81 82 ACE_EXPORT FrameInitFunc frameInitFunc_ = nullptr; 83 ACE_EXPORT FrameGetEnableFunc frameGetEnableFunc_ = nullptr; 84 ACE_EXPORT BeginFlushAnimationFunc beginFlushAnimationFunc_ = nullptr; 85 ACE_EXPORT EndFlushAnimationFunc endFlushAnimationFunc_ = nullptr; 86 ACE_EXPORT BeginFlushBuildFunc beginFlushBuildFunc_ = nullptr; 87 ACE_EXPORT EndFlushBuildFunc endFlushBuildFunc_ = nullptr; 88 ACE_EXPORT BeginFlushLayoutFunc beginFlushLayoutFunc_ = nullptr; 89 ACE_EXPORT EndFlushLayoutFunc endFlushLayoutFunc_ = nullptr; 90 ACE_EXPORT BeginFlushRenderFunc beginFlushRenderFunc_ = nullptr; 91 ACE_EXPORT EndFlushRenderFunc endFlushRenderFunc_ = nullptr; 92 ACE_EXPORT BeginFlushRenderFinishFunc beginFlushRenderFinishFunc_ = nullptr; 93 ACE_EXPORT EndFlushRenderFinishFunc endFlushRenderFinishFunc_ = nullptr; 94 ACE_EXPORT BeginProcessPostFlushFunc beginProcessPostFunc_ = nullptr; 95 ACE_EXPORT BeginListFlingFunc beginListFlingFunc_ = nullptr; 96 ACE_EXPORT EndListFlingFunc endListFlingFunc_ = nullptr; 97 ACE_EXPORT FlushBeginFunc flushBeginFunc_ = nullptr; 98 ACE_EXPORT FlushEndFunc flushEndFunc_ = nullptr; 99 ACE_EXPORT SetFrameParamFunc setFrameParamFunc_ = nullptr; 100 ACE_EXPORT EnableSelfRenderFunc enableSelfRenderFunc_ = nullptr; 101 ACE_EXPORT DisableSelfRenderFunc disableSelfRenderFunc_ = nullptr; 102 }; 103 } // namespace OHOS::Ace 104 #endif // FOUNDATION_ACE_FRAMEWORKS_BASE_LOG_FRAME_REPORT_H 105