diff --git a/src/MaaCore/Controller/AdbController.cpp b/src/MaaCore/Controller/AdbController.cpp index 0b636b4e0e..a015bfe09e 100644 --- a/src/MaaCore/Controller/AdbController.cpp +++ b/src/MaaCore/Controller/AdbController.cpp @@ -558,6 +558,13 @@ bool asst::AdbController::screencap(cv::Mat& image_payload, bool allow_reconnect case AdbProperty::ScreencapMethod::MumuExtras: { auto img_opt = m_mumu_extras.screencap(); screencap_ret = img_opt.has_value(); + + if (!screencap_ret && allow_reconnect) { + m_mumu_extras.reload(); + img_opt = m_mumu_extras.screencap(); + screencap_ret = img_opt.has_value(); + } + if (screencap_ret) { image_payload = img_opt.value(); } diff --git a/src/MaaCore/Controller/MumuExtras.cpp b/src/MaaCore/Controller/MumuExtras.cpp index 3321f75039..e797ad12a5 100644 --- a/src/MaaCore/Controller/MumuExtras.cpp +++ b/src/MaaCore/Controller/MumuExtras.cpp @@ -33,6 +33,13 @@ bool MumuExtras::init( return inited_; } +bool MumuExtras::reload() +{ + inited_ = load_mumu_library() && connect_mumu() && init_screencap(); + LogInfo << "Reload MumuExtras: " << VAR(inited_); + return inited_; +} + void MumuExtras::uninit() { inited_ = false; diff --git a/src/MaaCore/Controller/MumuExtras.h b/src/MaaCore/Controller/MumuExtras.h index 709328b9de..2a9c32da7b 100644 --- a/src/MaaCore/Controller/MumuExtras.h +++ b/src/MaaCore/Controller/MumuExtras.h @@ -24,8 +24,8 @@ public: bool inited() const { return inited_; } - bool init(const std::filesystem::path& mumu_path, int mumu_inst_index, int mumu_display_id); + bool reload(); void uninit(); std::optional screencap();