From 9c4318c03563814cf876251f2db8bb6fa8b1085d Mon Sep 17 00:00:00 2001 From: miushuxin Date: Wed, 27 Aug 2025 16:52:30 +0800 Subject: [PATCH] add off Signed-off-by: miushuxin --- frameworks/kits/cj/include/image_receiver_impl.h | 1 + frameworks/kits/cj/src/image_ffi.cpp | 12 ++++++++++++ frameworks/kits/cj/src/image_receiver_impl.cpp | 10 ++++++++++ 3 files changed, 23 insertions(+) diff --git a/frameworks/kits/cj/include/image_receiver_impl.h b/frameworks/kits/cj/include/image_receiver_impl.h index 8a0bf9412..43eb3a9bc 100644 --- a/frameworks/kits/cj/include/image_receiver_impl.h +++ b/frameworks/kits/cj/include/image_receiver_impl.h @@ -36,6 +36,7 @@ public: sptr ReadLatestImage(); void Release(); uint32_t CjOn(std::string name, std::function callBack); + uint32_t CjOff(); private: std::shared_ptr imageReceiver_; diff --git a/frameworks/kits/cj/src/image_ffi.cpp b/frameworks/kits/cj/src/image_ffi.cpp index e699ddf19..01fbc9d17 100644 --- a/frameworks/kits/cj/src/image_ffi.cpp +++ b/frameworks/kits/cj/src/image_ffi.cpp @@ -870,6 +870,18 @@ uint32_t FfiImageReceiverImplOn(int64_t id, char* name, int64_t callbackId) return instance->CjOn(name, func); } +FFI_EXPORT uint32_t FfiImageReceiverImplOff(int64_t id, char* name) +{ + (void)name; + IMAGE_LOGD("FfiImageReceiverImplOff start"); + auto instance = FFIData::GetData(id); + if (!instance) { + IMAGE_LOGE("[ImageReceiver] instance not exist %{public}" PRId64, id); + return ERR_IMAGE_INIT_ABNORMAL; + } + return instance->CjOff(); +} + //--------------------- ImagePacker --------------------------------------------------------------------------- int64_t FFiOHOSImagePackerConstructor() { diff --git a/frameworks/kits/cj/src/image_receiver_impl.cpp b/frameworks/kits/cj/src/image_receiver_impl.cpp index 848efb461..79874af6a 100644 --- a/frameworks/kits/cj/src/image_receiver_impl.cpp +++ b/frameworks/kits/cj/src/image_receiver_impl.cpp @@ -167,5 +167,15 @@ uint32_t ImageReceiverImpl::CjOn(std::string name, std::function callBac imageReceiver_->RegisterBufferAvaliableListener((std::shared_ptr&)listener); return 0; } + +uint32_t ImageReceiverImpl::CjOff() +{ + if (imageReceiver_ == nullptr) { + IMAGE_LOGE("Native instance is nullptr"); + return ERR_IMAGE_INIT_ABNORMAL; + } + imageReceiver_->UnRegisterBufferAvaliableListener(); + return 0; +} } // namespace Media } // namespace OHOS \ No newline at end of file -- Gitee