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 #include "rme_scene_sched.h" 17 #include <hitrace_meter.h> 18 #include "frame_window_mgr.h" 19 20 namespace OHOS { 21 namespace RME { RmeSceneSched()22RmeSceneSched::RmeSceneSched() 23 :curWorkingStatus(0), rmeCoreSched(nullptr) 24 {} 25 ~RmeSceneSched()26RmeSceneSched::~RmeSceneSched() 27 { 28 if (rmeCoreSched != nullptr) { 29 delete rmeCoreSched; 30 rmeCoreSched = nullptr; 31 } 32 } 33 Init()34bool RmeSceneSched::Init() 35 { 36 if (rmeCoreSched == nullptr) { 37 rmeCoreSched = new RmeCoreSched(); 38 } 39 40 if (rmeCoreSched == nullptr) { 41 return false; 42 } 43 bool ret = rmeCoreSched->Init(); 44 return ret; 45 } 46 HandleBeginScene()47void RmeSceneSched::HandleBeginScene() 48 { 49 curWorkingStatus = 1; 50 FrameWindowMgr::GetInstance().SetStartFlag(true); 51 rmeCoreSched->HandleBeginScene(); 52 StartTrace(HITRACE_TAG_ACE, ("FrameS-curWorkingStatus" + std::to_string(curWorkingStatus)).c_str()); 53 FinishTrace(HITRACE_TAG_ACE); 54 } 55 BeginFlushAnimation()56void RmeSceneSched::BeginFlushAnimation() 57 { 58 if (curWorkingStatus == 1) { 59 rmeCoreSched->BeginFlushAnimation(); 60 } 61 } 62 EndFlushAnimation()63void RmeSceneSched::EndFlushAnimation() 64 { 65 if (curWorkingStatus == 1) { 66 rmeCoreSched->EndFlushAnimation(); 67 } 68 } 69 BeginFlushBuild()70void RmeSceneSched::BeginFlushBuild() 71 { 72 if (curWorkingStatus == 1) { 73 rmeCoreSched->BeginFlushBuild(); 74 } 75 } 76 EndFlushBuild()77void RmeSceneSched::EndFlushBuild() 78 { 79 if (curWorkingStatus == 1) { 80 rmeCoreSched->EndFlushBuild(); 81 } 82 } 83 BeginFlushLayout()84void RmeSceneSched::BeginFlushLayout() 85 { 86 if (curWorkingStatus == 1) { 87 rmeCoreSched->BeginFlushLayout(); 88 } 89 } 90 EndFlushLayout()91void RmeSceneSched::EndFlushLayout() 92 { 93 if (curWorkingStatus == 1) { 94 rmeCoreSched->EndFlushLayout(); 95 } 96 } 97 BeginFlushRender()98void RmeSceneSched::BeginFlushRender() 99 { 100 if (curWorkingStatus == 1) { 101 rmeCoreSched->BeginFlushRender(); 102 } 103 } 104 EndFlushRender()105void RmeSceneSched::EndFlushRender() 106 { 107 if (curWorkingStatus == 1) { 108 rmeCoreSched->EndFlushRender(); 109 } 110 } 111 BeginFlushRenderFinish()112void RmeSceneSched::BeginFlushRenderFinish() 113 { 114 if (curWorkingStatus == 1) { 115 rmeCoreSched->BeginFlushRenderFinish(); 116 } 117 } 118 EndFlushRenderFinish()119void RmeSceneSched::EndFlushRenderFinish() 120 { 121 if (curWorkingStatus == 1) { 122 rmeCoreSched->EndFlushRenderFinish(); 123 } 124 } 125 BeginProcessPostFlush()126void RmeSceneSched::BeginProcessPostFlush() 127 { 128 if (curWorkingStatus == 1) { 129 rmeCoreSched->BeginProcessPostFlush(); 130 } 131 } 132 ProcessCommandsStart()133void RmeSceneSched::ProcessCommandsStart() 134 { 135 if (curWorkingStatus == 1) { 136 rmeCoreSched->ProcessCommandsStart(); 137 } 138 } 139 AnimateStart()140void RmeSceneSched::AnimateStart() 141 { 142 if (curWorkingStatus == 1) { 143 rmeCoreSched->AnimateStart(); 144 } 145 } 146 RenderStart()147void RmeSceneSched::RenderStart() 148 { 149 if (curWorkingStatus == 1) { 150 rmeCoreSched->RenderStart(); 151 } 152 } 153 SendCommandsStart()154void RmeSceneSched::SendCommandsStart() 155 { 156 if (curWorkingStatus == 1) { 157 rmeCoreSched->SendCommandsStart(); 158 } 159 } 160 HandleEndScene()161void RmeSceneSched::HandleEndScene() 162 { 163 FrameWindowMgr::GetInstance().SetStartFlag(false); 164 if (curWorkingStatus == 0) { 165 return; 166 } 167 rmeCoreSched->HandleEndScene(); 168 curWorkingStatus = 0; 169 StartTrace(HITRACE_TAG_ACE, ("FrameS-curWorkingStatus" + std::to_string(curWorkingStatus)).c_str()); 170 FinishTrace(HITRACE_TAG_ACE); 171 } 172 } // namespace RME 173 } // namespace OHOS 174