From c8a31cdafa2bd9b39e6dc00130753251641da49c Mon Sep 17 00:00:00 2001 From: Eilionoir Tunnicliff Date: Thu, 23 Mar 2023 22:08:35 -0400 Subject: [PATCH] Rewrite the integrations function again to fix dialog race condition --- Natives/LauncherMenuViewController.m | 54 +++++++-------------------- Natives/resources/Assets.car | Bin 9232352 -> 9232352 bytes 2 files changed, 14 insertions(+), 40 deletions(-) diff --git a/Natives/LauncherMenuViewController.m b/Natives/LauncherMenuViewController.m index 1197f567..8d3535a7 100644 --- a/Natives/LauncherMenuViewController.m +++ b/Natives/LauncherMenuViewController.m @@ -136,7 +136,7 @@ [self displayProgress:localize(@"login.jit.enabled", nil)]; [self displayProgress:nil]; } else { - [self enableJITWithIntegrations]; + [self enableJITWithJitStreamer:[getPreference(@"enable_altkit") boolValue]]; } } } @@ -320,33 +320,31 @@ } } -- (BOOL)enableJITWithAltKit +- (void)enableJITWithAltKit { - __block BOOL enabled = NO; [ALTServerManager.sharedManager startDiscovering]; [ALTServerManager.sharedManager autoconnectWithCompletionHandler:^(ALTServerConnection *connection, NSError *error) { if (error) { - NSLog(@"[AltKit] Could not auto-connect to server. %@", error); + NSLog(@"[AltKit] Could not auto-connect to server. %@", error.localizedRecoverySuggestion); } [connection enableUnsignedCodeExecutionWithCompletionHandler:^(BOOL success, NSError *error) { if (success) { NSLog(@"[AltKit] Successfully enabled JIT compilation!"); [ALTServerManager.sharedManager stopDiscovering]; - enabled = YES; } else { - NSLog(@"[AltKit] Error enabling JIT: %@", error.description); + NSLog(@"[AltKit] Error enabling JIT: %@", error.localizedRecoverySuggestion); + showDialog(self, localize(@"login.jit.fail.title", nil), localize(@"login.jit.fail.description", nil)); } [connection disconnect]; }]; }]; - - return enabled; } -- (BOOL)enableJITWithJitStreamer +- (void)enableJITWithJitStreamer:(BOOL)shouldRunAltKit { - __block BOOL enabled = NO; + [self displayProgress:localize(@"login.jit.checking", nil)]; + // TODO: customizable address NSString *address = getPreference(@"jitstreamer_server"); NSLog(@"[JitStreamer] Server is %@, attempting to connect...", address); @@ -370,44 +368,20 @@ responseDict = response; } if ([responseDict[@"success"] boolValue]) { - enabled = YES; + [self displayProgress:localize(@"login.jit.enabled", nil)]; + [self displayProgress:nil]; } else { NSLog(@"[JitStreamer] Error enabling JIT: %@", responseDict[@"message"]); + if(shouldRunAltKit) { [self enableJITWithAltKit]; } + else { showDialog(self, localize(@"login.jit.fail.title", nil), localize(@"login.jit.fail.description", nil)); } } }; [manager POST:[NSString stringWithFormat:@"http://%@/attach/%d/", address, getpid()] parameters:nil headers:nil progress:nil success:handleResponse failure:handleResponse]; } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"[JitStreamer] Server not found or VPN not connected."); + if(shouldRunAltKit) { [self enableJITWithAltKit]; } + else { showDialog(self, localize(@"login.jit.fail.title", nil), localize(@"login.jit.fail.description", nil)); } }]; - - return enabled; -} - -- (void)enableJITWithIntegrations { - [self displayProgress:localize(@"login.jit.checking", nil)]; - - BOOL jitstreamer = [self enableJITWithJitStreamer]; - BOOL altkit = NO; - if(!jitstreamer && [getPreference(@"enable_altkit") boolValue]) { - altkit = [self enableJITWithAltKit]; - } else if(jitstreamer) { - [self displayProgress:[NSString stringWithFormat:@"%@", localize(@"login.jit.enabled", nil)]]; - [self displayProgress:nil]; - return; - } - - if(!altkit) { - [self displayProgress:[NSString stringWithFormat:@"%@", localize(@"login.jit.fail", nil)]]; - [self displayProgress:nil]; - NSLog(@"[JIT] All integrations failed. User must enable JIT manually."); - if(![getPreference(@"debug_skip_wait_jit") boolValue]) { - showDialog(self, localize(@"login.jit.fail.title", nil), localize(@"login.jit.fail.description", nil)); - } - } else { - [self displayProgress:localize(@"login.jit.enabled", nil)]; - [self displayProgress:nil]; - return; - } } @end diff --git a/Natives/resources/Assets.car b/Natives/resources/Assets.car index 239f273156a04cf6a709807e881975d8f0e6921a..b784b3a33133a159c0b0f6e5c786db9d619a6c96 100644 GIT binary patch delta 651 zcmZwFOH+*j00!W%lv3yDq>J40QOFS~DxD8eA-OBJ+*PhoDECW=B4?K$Vy0$VSo8j~MwMyjZ06PwvW4O>aF zjas&|gF1FnPXoKyO(RV-vxgQ^EN|MM$dm;ax> J_IG+N?;k^_xcvYC delta 651 zcmZwFOH+*j00!W%lv3yDq>J40QOFS~DxD8eA-OBJ+*PhoDECW=B4?K$Vy0$VSo8&!R*gun3#!0r8AjSI1xruVU$HS zOUNOYrR0&%G72apMx5mok)W6rlu$|;<*cNFRjg(WYgtDn>j~MwMyjZ06PwvW4O>aF zjas&|gF1FnPXoKyO(RV-vxgQ^EN J_IG+N?;k_wxcvYC