diff --git a/source/MaaFramework/Task/PipelineTask.cpp b/source/MaaFramework/Task/PipelineTask.cpp index a3143cf222..13c4cdb079 100644 --- a/source/MaaFramework/Task/PipelineTask.cpp +++ b/source/MaaFramework/Task/PipelineTask.cpp @@ -161,11 +161,16 @@ NodeDetail PipelineTask::run_next(const std::vector& next, return true; }; + const bool need_screencap = !std::ranges::all_of(next, [&](const MAA_RES_NS::NodeAttr& node) { + auto data_opt = context_->get_pipeline_data(node); + return !data_opt || !data_opt->enabled || data_opt->reco_type == MAA_RES_NS::Recognition::Type::DirectHit; + }); + while (!context_->need_to_stop()) { auto current_clock = std::chrono::steady_clock::now(); - cv::Mat image = screencap(); + cv::Mat image = need_screencap ? screencap() : cv::Mat {}; - if (image.empty()) { + if (need_screencap && image.empty()) { LogWarn << "screencap failed, skip recognition" << VAR(pretask.name); if (!check_timeout_and_sleep(current_clock)) { break;