From 0390fc2886102c6aaeee5f8a362a2194436fb3d2 Mon Sep 17 00:00:00 2001 From: pwx1285814 Date: Mon, 2 Sep 2024 15:50:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9std::thread().detach=E4=B8=BA?= =?UTF-8?q?ffrt::submit()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: pwx1285814 Change-Id: Ic40c20c18d503292f7bec8479baed6a64684af18 --- bundle.json | 2 ++ common/BUILD.gn | 2 -- common/test/unittest/BUILD.gn | 1 + .../test/unittest/decision_center/BUILD.gn | 1 + services/common/test/unittest/imageJpeg/BUILD.gn | 1 + services/common/test/unittest/utils/BUILD.gn | 1 + services/screenclient/BUILD.gn | 2 ++ services/screenservice/sinkservice/BUILD.gn | 2 -- services/screenservice/sourceservice/BUILD.gn | 2 -- .../dscreenmgr/dscreenmanager_fuzzer/BUILD.gn | 1 + .../dscreensourceservice_fuzzer/BUILD.gn | 1 + .../sinkservice/screenregionmgr/BUILD.gn | 1 + .../unittest/sourceservice/dscreenmgr/BUILD.gn | 1 + .../screentransport/screensinktrans/BUILD.gn | 3 +-- .../encoder/src/image_source_encoder.cpp | 16 +++++++++------- .../screentransport/screensourcetrans/BUILD.gn | 4 ++-- .../src/screen_source_trans.cpp | 3 ++- .../onbufferavailable_fuzzer/BUILD.gn | 1 + .../onbufferavailable_fuzzer/BUILD.gn | 1 + .../onerror_fuzzer/BUILD.gn | 1 + .../oninputbufferavailable_fuzzer/BUILD.gn | 1 + .../onoutputbufferavailable_fuzzer/BUILD.gn | 1 + .../onoutputformatchanged_fuzzer/BUILD.gn | 1 + .../test/unittest/screendatachannel/BUILD.gn | 1 + .../test/unittest/screensinkprocessor/BUILD.gn | 1 + .../test/unittest/screensinktrans/BUILD.gn | 1 + .../test/unittest/screensourceprocessor/BUILD.gn | 1 + .../test/unittest/screensourcetrans/BUILD.gn | 1 + .../test/unittest/screentranstestutils/BUILD.gn | 1 + 29 files changed, 38 insertions(+), 18 deletions(-) diff --git a/bundle.json b/bundle.json index 6369a05f..d3104d5a 100644 --- a/bundle.json +++ b/bundle.json @@ -30,12 +30,14 @@ "accessibility", "av_codec", "dsoftbus", + "eventhandler", "hisysevent", "init", "ipc", "hilog", "input", "json", + "ffrt", "graphic_2d", "graphic_surface", "media_foundation", diff --git a/common/BUILD.gn b/common/BUILD.gn index 96cc038b..74c7be17 100644 --- a/common/BUILD.gn +++ b/common/BUILD.gn @@ -50,8 +50,6 @@ ohos_shared_library("distributed_screen_utils") { "json:nlohmann_json_static", ] - public_external_deps = [ "json:nlohmann_json_static" ] - defines = [ "HI_LOG_ENABLE", "DH_LOG_TAG=\"dscreenutil\"", diff --git a/common/test/unittest/BUILD.gn b/common/test/unittest/BUILD.gn index 7b6ab4e5..bd143d1d 100644 --- a/common/test/unittest/BUILD.gn +++ b/common/test/unittest/BUILD.gn @@ -60,5 +60,6 @@ ohos_unittest("ScreenCommonTest") { "hisysevent:libhisysevent", "init:libbegetutil", "ipc:ipc_core", + "json:nlohmann_json_static", ] } diff --git a/services/common/test/unittest/decision_center/BUILD.gn b/services/common/test/unittest/decision_center/BUILD.gn index d51a7bfd..14298d0f 100644 --- a/services/common/test/unittest/decision_center/BUILD.gn +++ b/services/common/test/unittest/decision_center/BUILD.gn @@ -57,6 +57,7 @@ ohos_unittest("ScreenDecisionCenterTest") { "c_utils:utils", "graphic_surface:surface", "graphic_surface:sync_fence", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } diff --git a/services/common/test/unittest/imageJpeg/BUILD.gn b/services/common/test/unittest/imageJpeg/BUILD.gn index cfb5035a..ce4d0142 100644 --- a/services/common/test/unittest/imageJpeg/BUILD.gn +++ b/services/common/test/unittest/imageJpeg/BUILD.gn @@ -53,6 +53,7 @@ ohos_unittest("JpegImageProcessorTest") { "av_codec:av_codec_client", "c_utils:utils", "graphic_surface:surface", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } diff --git a/services/common/test/unittest/utils/BUILD.gn b/services/common/test/unittest/utils/BUILD.gn index 8ff1370f..44bfc7bf 100644 --- a/services/common/test/unittest/utils/BUILD.gn +++ b/services/common/test/unittest/utils/BUILD.gn @@ -58,6 +58,7 @@ ohos_unittest("UtilsTest") { "distributed_hardware_fwk:libdhfwk_sdk", "googletest:gmock", "googletest:gtest_main", + "json:nlohmann_json_static", ] } diff --git a/services/screenclient/BUILD.gn b/services/screenclient/BUILD.gn index 2cce1550..9a74d6b6 100644 --- a/services/screenclient/BUILD.gn +++ b/services/screenclient/BUILD.gn @@ -48,6 +48,7 @@ ohos_shared_library("distributed_screen_client") { external_deps = [ "c_utils:utils", "distributed_hardware_fwk:distributedhardwareutils", + "eventhandler:libeventhandler", "graphic_2d:2d_graphics", "graphic_2d:libcomposer", "graphic_2d:libgraphic_utils", @@ -56,6 +57,7 @@ ohos_shared_library("distributed_screen_client") { "graphic_surface:surface", "hilog:libhilog", "input:libmmi-client", + "ipc:ipc_core", "json:nlohmann_json_static", "window_manager:libwm", ] diff --git a/services/screenservice/sinkservice/BUILD.gn b/services/screenservice/sinkservice/BUILD.gn index 6db4bea6..350eeae3 100644 --- a/services/screenservice/sinkservice/BUILD.gn +++ b/services/screenservice/sinkservice/BUILD.gn @@ -98,8 +98,6 @@ ohos_shared_library("distributed_screen_sink") { "window_manager:libdm", ] - public_external_deps = [ "json:nlohmann_json_static" ] - subsystem_name = "distributedhardware" part_name = "distributed_screen" diff --git a/services/screenservice/sourceservice/BUILD.gn b/services/screenservice/sourceservice/BUILD.gn index 97da3dd8..4061c4fb 100644 --- a/services/screenservice/sourceservice/BUILD.gn +++ b/services/screenservice/sourceservice/BUILD.gn @@ -106,8 +106,6 @@ ohos_shared_library("distributed_screen_source") { "window_manager:libdm", ] - public_external_deps = [ "json:nlohmann_json_static" ] - subsystem_name = "distributedhardware" part_name = "distributed_screen" diff --git a/services/screenservice/test/fuzztest/sourceservice/dscreenmgr/dscreenmanager_fuzzer/BUILD.gn b/services/screenservice/test/fuzztest/sourceservice/dscreenmgr/dscreenmanager_fuzzer/BUILD.gn index 885e1a59..d6f3e04f 100644 --- a/services/screenservice/test/fuzztest/sourceservice/dscreenmgr/dscreenmanager_fuzzer/BUILD.gn +++ b/services/screenservice/test/fuzztest/sourceservice/dscreenmgr/dscreenmanager_fuzzer/BUILD.gn @@ -57,6 +57,7 @@ ohos_fuzztest("DScreenManagerFuzzTest") { "graphic_2d:librender_service_client", "graphic_surface:surface", "hilog:libhilog", + "json:nlohmann_json_static", "window_manager:libdm", ] } diff --git a/services/screenservice/test/fuzztest/sourceservice/dscreenservice/dscreensourceservice_fuzzer/BUILD.gn b/services/screenservice/test/fuzztest/sourceservice/dscreenservice/dscreensourceservice_fuzzer/BUILD.gn index 9d80fa12..1a164665 100644 --- a/services/screenservice/test/fuzztest/sourceservice/dscreenservice/dscreensourceservice_fuzzer/BUILD.gn +++ b/services/screenservice/test/fuzztest/sourceservice/dscreenservice/dscreensourceservice_fuzzer/BUILD.gn @@ -55,6 +55,7 @@ ohos_fuzztest("DscreenSourceServiceFuzzTest") { "graphic_surface:surface", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "samgr:samgr_proxy", "window_manager:libdm", ] diff --git a/services/screenservice/test/unittest/sinkservice/screenregionmgr/BUILD.gn b/services/screenservice/test/unittest/sinkservice/screenregionmgr/BUILD.gn index f9560735..fb9d52d4 100644 --- a/services/screenservice/test/unittest/sinkservice/screenregionmgr/BUILD.gn +++ b/services/screenservice/test/unittest/sinkservice/screenregionmgr/BUILD.gn @@ -83,6 +83,7 @@ ohos_unittest("DscreenRegionMgrTest") { "graphic_2d:librender_service_client", "graphic_surface:surface", "hisysevent:libhisysevent", + "json:nlohmann_json_static", "media_foundation:media_foundation", "window_manager:libdm", ] diff --git a/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn b/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn index a9dcd9bf..1a6e3ed8 100644 --- a/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn +++ b/services/screenservice/test/unittest/sourceservice/dscreenmgr/BUILD.gn @@ -89,6 +89,7 @@ ohos_unittest("DscreenMgrTest") { "graphic_surface:sync_fence", "hdf_core:libhdi", "hicollie:libhicollie", + "json:nlohmann_json_static", "media_foundation:media_foundation", "window_manager:libdm", ] diff --git a/services/screentransport/screensinktrans/BUILD.gn b/services/screentransport/screensinktrans/BUILD.gn index 4bb63ebc..b3ad507c 100644 --- a/services/screentransport/screensinktrans/BUILD.gn +++ b/services/screentransport/screensinktrans/BUILD.gn @@ -75,13 +75,12 @@ ohos_shared_library("distributed_screen_sinktrans") { "hilog:libhilog", "hisysevent:libhisysevent", "hitrace:hitrace_meter", + "ipc:ipc_core", "json:nlohmann_json_static", "libjpeg-turbo:turbojpeg", "media_foundation:media_foundation", ] - public_external_deps = [ "json:nlohmann_json_static" ] - subsystem_name = "distributedhardware" part_name = "distributed_screen" diff --git a/services/screentransport/screensourceprocessor/encoder/src/image_source_encoder.cpp b/services/screentransport/screensourceprocessor/encoder/src/image_source_encoder.cpp index 07ee23fa..9e697a3c 100644 --- a/services/screentransport/screensourceprocessor/encoder/src/image_source_encoder.cpp +++ b/services/screentransport/screensourceprocessor/encoder/src/image_source_encoder.cpp @@ -127,6 +127,7 @@ int32_t ImageSourceEncoder::ConfigureEncoder(const VideoParam &configParam) ret = AddSurface(); if (ret != DH_SUCCESS) { DHLOGE("%{public}s: Add surface failed ret: %{public}" PRId32, DSCREEN_LOG_TAG, ret); + std::unique_lock bufLock(bufferMtx_); consumerSurface_ = nullptr; producerSurface_ = nullptr; return ret; @@ -137,6 +138,7 @@ int32_t ImageSourceEncoder::ConfigureEncoder(const VideoParam &configParam) int32_t ImageSourceEncoder::AddSurface() { DHLOGI("%{public}s: AddSurface.", DSCREEN_LOG_TAG); + std::unique_lock bufLock(bufferMtx_); consumerSurface_ = IConsumerSurface::Create(); if (consumerSurface_ == nullptr) { DHLOGE("%{public}s: creat consumer surface failed.", DSCREEN_LOG_TAG); @@ -220,7 +222,6 @@ int32_t ImageSourceEncoder::FeedEncoderData(sptr &surfaceBuffer) int32_t ret = memcpy_s(encoderSurfaceAddr, screenDataSize, surfaceAddr, screenDataSize); if (ret != EOK) { DHLOGE("%{public}s: surfaceBuffer memcpy_s run failed.", DSCREEN_LOG_TAG); - consumerSurface_->ReleaseBuffer(surfaceBuffer, -1); encoderSurface_->CancelBuffer(encoderSurfaceBuffer); return ret; } @@ -229,11 +230,9 @@ int32_t ImageSourceEncoder::FeedEncoderData(sptr &surfaceBuffer) SurfaceError surfaceErr = encoderSurface_->FlushBuffer(encoderSurfaceBuffer, -1, flushConfig); if (surfaceErr != SURFACE_ERROR_OK) { DHLOGE("%{public}s: encoderSurface_ flush buffer failed.", DSCREEN_LOG_TAG); - consumerSurface_->ReleaseBuffer(surfaceBuffer, -1); encoderSurface_->CancelBuffer(encoderSurfaceBuffer); return surfaceErr; } - consumerSurface_->ReleaseBuffer(surfaceBuffer, -1); return DH_SUCCESS; } @@ -301,11 +300,14 @@ int32_t ImageSourceEncoder::StopEncoder() DHLOGE("%{public}s: Stop encoder failed.", DSCREEN_LOG_TAG); return ERR_DH_SCREEN_CODEC_STOP_FAILED; } - ret = consumerSurface_->UnregisterConsumerListener(); - if (ret != SURFACE_ERROR_OK) { - DHLOGE("Unregister Consumer Listener failed."); + std::unique_lock bufLock(bufferMtx_); + if (consumerSurface_ != nullptr) { + ret = consumerSurface_->UnregisterConsumerListener(); + if (ret != SURFACE_ERROR_OK) { + DHLOGE("Unregister Consumer Listener failed."); + } + consumerSurface_ = nullptr; } - consumerSurface_ = nullptr; producerSurface_ = nullptr; return DH_SUCCESS; } diff --git a/services/screentransport/screensourcetrans/BUILD.gn b/services/screentransport/screensourcetrans/BUILD.gn index 0960cebc..0e211a6b 100644 --- a/services/screentransport/screensourcetrans/BUILD.gn +++ b/services/screentransport/screensourcetrans/BUILD.gn @@ -71,18 +71,18 @@ ohos_shared_library("distributed_screen_sourcetrans") { "distributed_hardware_fwk:distributedhardwareutils", "distributed_hardware_fwk:libdhfwk_sdk", "dsoftbus:softbus_client", + "ffrt:libffrt", "graphic_surface:surface", "graphic_surface:sync_fence", "hilog:libhilog", "hisysevent:libhisysevent", "hitrace:hitrace_meter", + "ipc:ipc_core", "json:nlohmann_json_static", "libjpeg-turbo:turbojpeg", "media_foundation:media_foundation", ] - public_external_deps = [ "json:nlohmann_json_static" ] - subsystem_name = "distributedhardware" part_name = "distributed_screen" diff --git a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp index 60d8e390..aa4b964b 100644 --- a/services/screentransport/screensourcetrans/src/screen_source_trans.cpp +++ b/services/screentransport/screensourcetrans/src/screen_source_trans.cpp @@ -25,6 +25,7 @@ #include "dscreen_hisysevent.h" #include "dscreen_hitrace.h" #include "dscreen_log.h" +#include "ffrt_inner.h" #include "image_source_processor.h" #include "screen_data_channel_impl.h" namespace OHOS { @@ -342,7 +343,7 @@ void ScreenSourceTrans::OnSessionOpened() isChannelReady_ = true; DHLOGI("%{public}s: Start thread.", DSCREEN_LOG_TAG); - std::thread([this] { this->FeedChannelData(); }).detach(); + ffrt::submit([this] { this->FeedChannelData(); }); std::unique_lock lck(sessionMtx_); sessionCond_.notify_all(); } diff --git a/services/screentransport/test/fuzztest/screensinkprocessor/onbufferavailable_fuzzer/BUILD.gn b/services/screentransport/test/fuzztest/screensinkprocessor/onbufferavailable_fuzzer/BUILD.gn index 42cc79d7..906cbcf7 100644 --- a/services/screentransport/test/fuzztest/screensinkprocessor/onbufferavailable_fuzzer/BUILD.gn +++ b/services/screentransport/test/fuzztest/screensinkprocessor/onbufferavailable_fuzzer/BUILD.gn @@ -64,6 +64,7 @@ ohos_fuzztest("OnBufferAvailableFuzzTest") { "graphic_surface:sync_fence", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onbufferavailable_fuzzer/BUILD.gn b/services/screentransport/test/fuzztest/screensourceprocessor/onbufferavailable_fuzzer/BUILD.gn index f5882ae5..ae57674d 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onbufferavailable_fuzzer/BUILD.gn +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onbufferavailable_fuzzer/BUILD.gn @@ -64,6 +64,7 @@ ohos_fuzztest("OnBufferAvailableFuzzTest") { "graphic_surface:sync_fence", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onerror_fuzzer/BUILD.gn b/services/screentransport/test/fuzztest/screensourceprocessor/onerror_fuzzer/BUILD.gn index b0d78ab5..ea51f259 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onerror_fuzzer/BUILD.gn +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onerror_fuzzer/BUILD.gn @@ -57,6 +57,7 @@ ohos_fuzztest("OnErrorFuzzTest") { "graphic_surface:sync_fence", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/oninputbufferavailable_fuzzer/BUILD.gn b/services/screentransport/test/fuzztest/screensourceprocessor/oninputbufferavailable_fuzzer/BUILD.gn index 61da1bcd..a7752d8c 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/oninputbufferavailable_fuzzer/BUILD.gn +++ b/services/screentransport/test/fuzztest/screensourceprocessor/oninputbufferavailable_fuzzer/BUILD.gn @@ -57,6 +57,7 @@ ohos_fuzztest("OnInputBufferAvailableFuzzTest") { "graphic_surface:sync_fence", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/BUILD.gn b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/BUILD.gn index be3c6620..3d0a8b5a 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/BUILD.gn +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputbufferavailable_fuzzer/BUILD.gn @@ -58,6 +58,7 @@ ohos_fuzztest("OnOutputBufferAvailableFuzzTest") { "graphic_surface:sync_fence", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] diff --git a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/BUILD.gn b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/BUILD.gn index 34b832e7..b723e739 100644 --- a/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/BUILD.gn +++ b/services/screentransport/test/fuzztest/screensourceprocessor/onoutputformatchanged_fuzzer/BUILD.gn @@ -57,6 +57,7 @@ ohos_fuzztest("OnOutputFormatChangedFuzzTest") { "graphic_surface:sync_fence", "hilog:libhilog", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] diff --git a/services/screentransport/test/unittest/screendatachannel/BUILD.gn b/services/screentransport/test/unittest/screendatachannel/BUILD.gn index 05329a4d..e6fc942a 100644 --- a/services/screentransport/test/unittest/screendatachannel/BUILD.gn +++ b/services/screentransport/test/unittest/screendatachannel/BUILD.gn @@ -64,6 +64,7 @@ ohos_unittest("DataChannelTest") { "googletest:gmock", "googletest:gtest_main", "hilog:libhilog", + "json:nlohmann_json_static", ] defines = [ diff --git a/services/screentransport/test/unittest/screensinkprocessor/BUILD.gn b/services/screentransport/test/unittest/screensinkprocessor/BUILD.gn index 5b85c35e..20221834 100644 --- a/services/screentransport/test/unittest/screensinkprocessor/BUILD.gn +++ b/services/screentransport/test/unittest/screensinkprocessor/BUILD.gn @@ -68,6 +68,7 @@ ohos_unittest("SinkProcessorTest") { "googletest:gtest_main", "graphic_surface:surface", "hilog:libhilog", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] diff --git a/services/screentransport/test/unittest/screensinktrans/BUILD.gn b/services/screentransport/test/unittest/screensinktrans/BUILD.gn index cf17a523..dd7e19da 100644 --- a/services/screentransport/test/unittest/screensinktrans/BUILD.gn +++ b/services/screentransport/test/unittest/screensinktrans/BUILD.gn @@ -66,6 +66,7 @@ ohos_unittest("SinkTransTest") { "googletest:gtest_main", "graphic_surface:surface", "hilog:libhilog", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] diff --git a/services/screentransport/test/unittest/screensourceprocessor/BUILD.gn b/services/screentransport/test/unittest/screensourceprocessor/BUILD.gn index f54d1338..5ad167a2 100644 --- a/services/screentransport/test/unittest/screensourceprocessor/BUILD.gn +++ b/services/screentransport/test/unittest/screensourceprocessor/BUILD.gn @@ -66,6 +66,7 @@ ohos_unittest("SourceProcessorTest") { "graphic_surface:surface", "graphic_surface:sync_fence", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } diff --git a/services/screentransport/test/unittest/screensourcetrans/BUILD.gn b/services/screentransport/test/unittest/screensourcetrans/BUILD.gn index 58997697..5980239e 100644 --- a/services/screentransport/test/unittest/screensourcetrans/BUILD.gn +++ b/services/screentransport/test/unittest/screensourcetrans/BUILD.gn @@ -71,6 +71,7 @@ ohos_unittest("SourceTransTest") { "graphic_surface:surface", "graphic_surface:sync_fence", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } diff --git a/services/screentransport/test/unittest/screentranstestutils/BUILD.gn b/services/screentransport/test/unittest/screentranstestutils/BUILD.gn index 62261137..34677b60 100644 --- a/services/screentransport/test/unittest/screentranstestutils/BUILD.gn +++ b/services/screentransport/test/unittest/screentranstestutils/BUILD.gn @@ -71,6 +71,7 @@ ohos_unittest("ScreenCallbackTest") { "graphic_surface:surface", "graphic_surface:sync_fence", "ipc:ipc_core", + "json:nlohmann_json_static", "media_foundation:media_foundation", ] } -- Gitee