11d3ffd26Sopenharmony_ci/* 21d3ffd26Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 31d3ffd26Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 41d3ffd26Sopenharmony_ci * you may not use this file except in compliance with the License. 51d3ffd26Sopenharmony_ci * You may obtain a copy of the License at 61d3ffd26Sopenharmony_ci * 71d3ffd26Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 81d3ffd26Sopenharmony_ci * 91d3ffd26Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 101d3ffd26Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 111d3ffd26Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 121d3ffd26Sopenharmony_ci * See the License for the specific language governing permissions and 131d3ffd26Sopenharmony_ci * limitations under the License. 141d3ffd26Sopenharmony_ci */ 151d3ffd26Sopenharmony_ci 161d3ffd26Sopenharmony_ci#include "camera_xcollie.h" 171d3ffd26Sopenharmony_ci#include "camera_log.h" 181d3ffd26Sopenharmony_ci 191d3ffd26Sopenharmony_ci#ifdef HICOLLIE_ENABLE 201d3ffd26Sopenharmony_ci#include "xcollie/xcollie.h" 211d3ffd26Sopenharmony_ci#endif 221d3ffd26Sopenharmony_ci 231d3ffd26Sopenharmony_cinamespace OHOS { 241d3ffd26Sopenharmony_ciCameraXCollie::CameraXCollie(const std::string& tag, uint32_t flag, uint32_t timeoutSeconds, 251d3ffd26Sopenharmony_ci std::function<void(void *)> func, void* arg) 261d3ffd26Sopenharmony_ci{ 271d3ffd26Sopenharmony_ci tag_ = tag; 281d3ffd26Sopenharmony_ci#ifdef HICOLLIE_ENABLE 291d3ffd26Sopenharmony_ci id_ = HiviewDFX::XCollie::GetInstance().SetTimer(tag_, timeoutSeconds, func, arg, flag); 301d3ffd26Sopenharmony_ci#else 311d3ffd26Sopenharmony_ci id_ = -1; 321d3ffd26Sopenharmony_ci#endif 331d3ffd26Sopenharmony_ci isCanceled_ = false; 341d3ffd26Sopenharmony_ci MEDIA_DEBUG_LOG("start CameraXCollie, tag:%{public}s,timeout:%{public}u,flag:%{public}u,id:%{public}d", 351d3ffd26Sopenharmony_ci tag_.c_str(), timeoutSeconds, flag, id_); 361d3ffd26Sopenharmony_ci} 371d3ffd26Sopenharmony_ci 381d3ffd26Sopenharmony_ciCameraXCollie::~CameraXCollie() 391d3ffd26Sopenharmony_ci{ 401d3ffd26Sopenharmony_ci CancelCameraXCollie(); 411d3ffd26Sopenharmony_ci} 421d3ffd26Sopenharmony_ci 431d3ffd26Sopenharmony_civoid CameraXCollie::CancelCameraXCollie() 441d3ffd26Sopenharmony_ci{ 451d3ffd26Sopenharmony_ci if (!isCanceled_) { 461d3ffd26Sopenharmony_ci#ifdef HICOLLIE_ENABLE 471d3ffd26Sopenharmony_ci HiviewDFX::XCollie::GetInstance().CancelTimer(id_); 481d3ffd26Sopenharmony_ci#endif 491d3ffd26Sopenharmony_ci isCanceled_ = true; 501d3ffd26Sopenharmony_ci MEDIA_DEBUG_LOG("cancel CameraXCollie, tag:%{public}s,id:%{public}d", tag_.c_str(), id_); 511d3ffd26Sopenharmony_ci } 521d3ffd26Sopenharmony_ci} 531d3ffd26Sopenharmony_ci}