1 /* 2 * Copyright (c) 2023 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 "render_frame_trace_impl.h" 17 #include <unistd.h> 18 #include "frame_trace.h" 19 20 namespace FRAME_TRACE { 21 22 #ifdef __aarch64__ 23 const char* g_frameTraceSoPath = "/system/lib64/libframe_trace_intf.z.so"; 24 #else 25 const char* g_frameTraceSoPath = "/system/lib/libframe_trace_intf.z.so"; 26 #endif 27 28 RenderFrameTraceImpl* RenderFrameTraceImpl::instance_ = new RenderFrameTraceImpl(); 29 RenderFrameTraceImpl()30RenderFrameTraceImpl::RenderFrameTraceImpl() 31 { 32 RenderFrameTrace::RegisterImpl(this); 33 } 34 AccessFrameTrace()35bool RenderFrameTraceImpl::AccessFrameTrace() 36 { 37 if (!judgeFrameTrace_) { 38 judgeFrameTrace_ = true; 39 accessFrameTrace_ = access(g_frameTraceSoPath, F_OK) ? false : true; 40 } 41 return accessFrameTrace_; 42 } 43 RenderStartFrameTrace(const std::string & traceTag)44void RenderFrameTraceImpl::RenderStartFrameTrace(const std::string& traceTag) 45 { 46 if (AccessFrameTrace()) { 47 QuickStartFrameTrace(traceTag); 48 } 49 } 50 RenderEndFrameTrace(const std::string & traceTag)51void RenderFrameTraceImpl::RenderEndFrameTrace(const std::string& traceTag) 52 { 53 if (AccessFrameTrace()) { 54 QuickEndFrameTrace(traceTag); 55 } 56 } 57 RenderFrameTraceOpen()58bool RenderFrameTraceImpl::RenderFrameTraceOpen() 59 { 60 if (AccessFrameTrace()) { 61 return FrameAwareTraceOpen(); 62 } 63 return false; 64 } 65 RenderFrameTraceIsOpen()66bool RenderFrameTraceImpl::RenderFrameTraceIsOpen() 67 { 68 if (AccessFrameTrace()) { 69 return FrameAwareTraceIsOpen(); 70 } 71 return false; 72 } 73 RenderFrameTraceClose()74bool RenderFrameTraceImpl::RenderFrameTraceClose() 75 { 76 if (AccessFrameTrace()) { 77 return FrameAwareTraceClose(); 78 } 79 return false; 80 } 81 82 } // namespace FRAME_TRACE 83