From 78a6c088bcab65f69199cf54c702a7f50c2012a5 Mon Sep 17 00:00:00 2001 From: zzyyyl Date: Fri, 30 Sep 2022 15:51:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=9C=89=E6=97=B6?= =?UTF-8?q?=E5=80=99=E8=8E=AB=E5=90=8D=E6=88=AA=E5=9B=BE=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (修复 screencap 和 call_command 的 重连 和 socket 参数传递错误的问题) link to bb0b059ef25a0e911e2795088666aca65a480eaf --- src/MeoAssistant/Controller.cpp | 26 +++++++++++++------------- src/MeoAssistant/Controller.h | 6 +++--- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/MeoAssistant/Controller.cpp b/src/MeoAssistant/Controller.cpp index dd86536ed4..5ce58dc21a 100644 --- a/src/MeoAssistant/Controller.cpp +++ b/src/MeoAssistant/Controller.cpp @@ -180,8 +180,8 @@ void asst::Controller::pipe_working_proc() } } -std::optional asst::Controller::call_command(const std::string& cmd, int64_t timeout, bool recv_by_socket, - bool allow_reconnect) +std::optional asst::Controller::call_command(const std::string& cmd, int64_t timeout, bool allow_reconnect, + bool recv_by_socket) { using namespace std::chrono_literals; using namespace std::chrono; @@ -480,7 +480,7 @@ std::optional asst::Controller::call_command(const std::string& cmd if (need_exit()) { break; } - auto reconnect_ret = call_command(m_adb.connect, 60LL * 1000, false, false /* 禁止重连避免无限递归 */); + auto reconnect_ret = call_command(m_adb.connect, 60LL * 1000, false /* 禁止重连避免无限递归 */); if (need_exit()) { break; } @@ -490,7 +490,7 @@ std::optional asst::Controller::call_command(const std::string& cmd is_reconnect_success = reconnect_str.find("error") == std::string::npos; } if (is_reconnect_success) { - auto recall_ret = call_command(cmd, timeout, recv_by_socket, false /* 禁止重连避免无限递归 */); + auto recall_ret = call_command(cmd, timeout, false /* 禁止重连避免无限递归 */, recv_by_socket); if (recall_ret) { // 重连并成功执行了 reconnect_info["what"] = "Reconnected"; @@ -747,7 +747,7 @@ bool asst::Controller::screencap(bool allow_reconnect) clear_lf_info(); auto start_time = high_resolution_clock::now(); - if (m_support_socket && m_server_started && screencap(m_adb.screencap_raw_by_nc, decode_raw, true)) { + if (m_support_socket && m_server_started && screencap(m_adb.screencap_raw_by_nc, decode_raw, allow_reconnect, true)) { auto duration = duration_cast(high_resolution_clock::now() - start_time); if (duration < min_cost) { m_adb.screencap_method = AdbProperty::ScreencapMethod::RawByNc; @@ -794,7 +794,7 @@ bool asst::Controller::screencap(bool allow_reconnect) return m_adb.screencap_method != AdbProperty::ScreencapMethod::UnknownYet; } break; case AdbProperty::ScreencapMethod::RawByNc: { - return screencap(m_adb.screencap_raw_by_nc, decode_raw, true, allow_reconnect); + return screencap(m_adb.screencap_raw_by_nc, decode_raw, allow_reconnect, true); } break; case AdbProperty::ScreencapMethod::RawWithGzip: { return screencap(m_adb.screencap_raw_with_gzip, decode_raw_with_gzip, allow_reconnect); @@ -807,14 +807,14 @@ bool asst::Controller::screencap(bool allow_reconnect) return false; } -bool asst::Controller::screencap(const std::string& cmd, const DecodeFunc& decode_func, bool by_socket, - bool allow_reconnect) +bool asst::Controller::screencap(const std::string& cmd, const DecodeFunc& decode_func, bool allow_reconnect, + bool by_socket) { if ((!m_support_socket || !m_server_started) && by_socket) [[unlikely]] { return false; } - auto ret = call_command(cmd, 20000, by_socket, allow_reconnect); + auto ret = call_command(cmd, 20000, allow_reconnect, by_socket); if (!ret || ret.value().empty()) [[unlikely]] { Log.error("data is empty!"); @@ -1075,7 +1075,7 @@ bool asst::Controller::connect(const std::string& adb_path, const std::string& a /* connect */ { m_adb.connect = cmd_replace(adb_cfg.connect); - auto connect_ret = call_command(m_adb.connect, 60LL * 1000, false, false /* adb 连接时不允许重试 */); + auto connect_ret = call_command(m_adb.connect, 60LL * 1000, false /* adb 连接时不允许重试 */); // 端口即使错误,命令仍然会返回0,TODO 对connect_result进行判断 bool is_connect_success = false; if (connect_ret) { @@ -1102,7 +1102,7 @@ bool asst::Controller::connect(const std::string& adb_path, const std::string& a /* get uuid (imei) */ { - auto uuid_ret = call_command(cmd_replace(adb_cfg.uuid), 20000, false, false /* adb 连接时不允许重试 */); + auto uuid_ret = call_command(cmd_replace(adb_cfg.uuid), 20000, false /* adb 连接时不允许重试 */); if (!uuid_ret) { json::value info = get_info_json() | json::object { { "what", "ConnectFailed" }, @@ -1321,7 +1321,7 @@ void asst::Controller::kill_adb_daemon() #endif { if (!m_adb_release.empty()) { - call_command(m_adb_release, 20000, false, false); + call_command(m_adb_release, 20000, false); m_adb_release.clear(); } } @@ -1340,7 +1340,7 @@ bool asst::Controller::release() } else { m_adb_release.clear(); - return call_command(m_adb.release, 20000, false, false).has_value(); + return call_command(m_adb.release, 20000, false).has_value(); } } } diff --git a/src/MeoAssistant/Controller.h b/src/MeoAssistant/Controller.h index 6c400b0f70..fc13011158 100644 --- a/src/MeoAssistant/Controller.h +++ b/src/MeoAssistant/Controller.h @@ -75,7 +75,7 @@ namespace asst bool need_exit() const; void pipe_working_proc(); std::optional call_command(const std::string& cmd, int64_t timeout = 20000, - bool recv_by_socket = false, bool allow_reconnect = true); + bool allow_reconnect = true, bool recv_by_socket = false); int push_cmd(const std::string& cmd); bool release(); void kill_adb_daemon(); @@ -86,8 +86,8 @@ namespace asst using DecodeFunc = std::function; bool screencap(bool allow_reconnect = false); - bool screencap(const std::string& cmd, const DecodeFunc& decode_func, bool by_socket = false, - bool allow_reconnect = false); + bool screencap(const std::string& cmd, const DecodeFunc& decode_func, bool allow_reconnect = false, + bool by_socket = false); void clear_lf_info(); cv::Mat get_resized_image() const;