From df1fcba2f8afc9e7ea59aedf163c7a55f957104f Mon Sep 17 00:00:00 2001 From: Zuosizhu <60862861+Zuosizhu@users.noreply.github.com> Date: Wed, 29 Mar 2023 23:20:55 +0800 Subject: [PATCH] Opt: restart u2 after GGStatus checked and before GG is set on to avoid U2 dies when using LDPlayer. --- module/gg_handler/gg_handler.py | 19 +++++++++++++++---- module/handler/login.py | 5 +++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/module/gg_handler/gg_handler.py b/module/gg_handler/gg_handler.py index 4c73cd1c6..490e09606 100644 --- a/module/gg_handler/gg_handler.py +++ b/module/gg_handler/gg_handler.py @@ -31,7 +31,7 @@ class GGHandler: for _ in range(2): try: if _crashed: - timeout(self.handle_before_restart, timeout_sec=60) + timeout(self.handle_u2_restart, timeout_sec=60) if not timeout(LoginHandler(config=self.config, device=self.device).app_restart, timeout_sec=600): break raise RuntimeError @@ -65,7 +65,11 @@ class GGHandler: # elif self.method == 'u2': # GGU2(config=self.config, device=self.device) \ # .set_on(factor=self.factor) - GGU2(config=self.config, device=self.device).set_on(factor=self.factor) # Not support screenshot anymore + self.handle_u2_restart() + if timeout(GGU2(config=self.config, device=self.device).set_on, timeout_sec=120, factor=self.factor): + from module.exception import GameStuckError + raise GameStuckError + # Not support screenshot anymore else: self.gg_reset() @@ -104,7 +108,7 @@ class GGHandler: f'Enabled={gg_data["gg_enable"]} AutoRestart={gg_data["gg_auto"]} Current stage={gg_data["gg_on"]}') return gg_data - def handle_before_restart(self): + def handle_u2_restart(self): _need_restart_atx = deep_get(d=self.config.data, keys='GameManager.GGHandler.RestartATX') if _need_restart_atx: try: @@ -117,7 +121,14 @@ class GGHandler: exit(1) import uiautomator2 as u2 logger.info('Reset UiAutomator') - u2.connect(self.device.serial).reset_uiautomator() + try: + u2.connect(self.device.serial).reset_uiautomator() + except Exception: + from module.notify import handle_notify + handle_notify(self.config.Error_OnePushConfig, + title=f"Alas <{self.config.config_name}> Restart U2 failed", + content=f"<{self.config.config_name}> RequestHumanTakeover. \nMaybe your emulator died", ) + exit(1) def handle_restart(self): """ diff --git a/module/handler/login.py b/module/handler/login.py index 27adeb7a3..6a3bcdb14 100644 --- a/module/handler/login.py +++ b/module/handler/login.py @@ -142,19 +142,20 @@ class LoginHandler(UI): raise GameStuckError def app_stop(self): + GGHandler(config=self.config, device=self.device).handle_u2_restart() logger.hr('App stop') self.device.app_stop() def app_start(self): + GGHandler(config=self.config, device=self.device).handle_u2_restart() logger.hr('App start') - GGHandler(config=self.config, device=self.device).handle_before_restart() self.device.app_start() self.handle_app_login() # self.ensure_no_unfinished_campaign() def app_restart(self): + GGHandler(config=self.config, device=self.device).handle_u2_restart() logger.hr('App restart') - GGHandler(config=self.config, device=self.device).handle_before_restart() self.device.app_stop() self.device.app_start() self.handle_app_login()