From ce0beb62a17f8cd16883c24ec35b6331046a6775 Mon Sep 17 00:00:00 2001 From: teldd1 <71307374+teldd1@users.noreply.github.com> Date: Mon, 27 Jan 2025 07:59:01 -0800 Subject: [PATCH] fix: Attempt retry once screencap for MumuExtras (#11550) --- src/MaaCore/Controller/MumuExtras.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/MaaCore/Controller/MumuExtras.cpp b/src/MaaCore/Controller/MumuExtras.cpp index ae02323755..8dd7718e80 100644 --- a/src/MaaCore/Controller/MumuExtras.cpp +++ b/src/MaaCore/Controller/MumuExtras.cpp @@ -68,9 +68,18 @@ std::optional MumuExtras::screencap() display_buffer_.data()); if (ret) { - LogError << "Failed to capture display" << VAR(ret) << VAR(mumu_handle_) << VAR(display_id) - << VAR(display_buffer_.size()) << VAR(display_width_) << VAR(display_height_); - return std::nullopt; + // Try reloading once before giving up. + if (!reload()) { + LogError << "Failed to capture display and failed to reload. " << VAR(ret) << VAR(mumu_handle_) + << VAR(display_id) << VAR(display_buffer_.size()) << VAR(display_width_) << VAR(display_height_); + return std::nullopt; + } + if (ret) { + LogError << "Failed to capture display, but reload before retrying capture was successful. " << VAR(ret) + << VAR(mumu_handle_) << VAR(display_id) << VAR(display_buffer_.size()) << VAR(display_width_) + << VAR(display_height_); + return std::nullopt; + } } cv::Mat raw(display_height_, display_width_, CV_8UC4, display_buffer_.data());