From 62cbe99a274dd783ace736b842cbd2353e16af19 Mon Sep 17 00:00:00 2001 From: Hajime Hoshi Date: Tue, 25 Oct 2022 13:36:54 +0900 Subject: [PATCH] cmd/ebitenmobile: bug fix: dead lock due to @synchronized Closes #2407 --- cmd/ebitenmobile/gobind.go | 39 ++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/cmd/ebitenmobile/gobind.go b/cmd/ebitenmobile/gobind.go index 1149bfd9d..9f5ccdf04 100644 --- a/cmd/ebitenmobile/gobind.go +++ b/cmd/ebitenmobile/gobind.go @@ -229,13 +229,15 @@ const objcM = `// Code generated by ebitenmobile. DO NOT EDIT. if (!active_) { return; } + } - if (EbitenmobileviewIsGL()) { - [[self glkView] setNeedsDisplay]; - } else { - [self updateEbiten]; - } + if (EbitenmobileviewIsGL()) { + [[self glkView] setNeedsDisplay]; + } else { + [self updateEbiten]; + } + @synchronized(self) { if (explicitRendering_) { [displayLink_ setPaused:YES]; } @@ -243,15 +245,14 @@ const objcM = `// Code generated by ebitenmobile. DO NOT EDIT. } - (void)glkView:(GLKView*)view drawInRect:(CGRect)rect { - @synchronized(self) { - [self updateEbiten]; - } + [self updateEbiten]; } - (void)updateEbiten { if (error_) { return; } + NSError* err = nil; EbitenmobileviewUpdate(&err); if (err != nil) { @@ -303,11 +304,12 @@ const objcM = `// Code generated by ebitenmobile. DO NOT EDIT. @synchronized(self) { active_ = false; - NSError* err = nil; - EbitenmobileviewSuspend(&err); - if (err != nil) { - [self onErrorOnGameUpdate:err]; - } + } + + NSError* err = nil; + EbitenmobileviewSuspend(&err); + if (err != nil) { + [self onErrorOnGameUpdate:err]; } } @@ -316,11 +318,12 @@ const objcM = `// Code generated by ebitenmobile. DO NOT EDIT. @synchronized(self) { active_ = true; - NSError* err = nil; - EbitenmobileviewResume(&err); - if (err != nil) { - [self onErrorOnGameUpdate:err]; - } + } + + NSError* err = nil; + EbitenmobileviewResume(&err); + if (err != nil) { + [self onErrorOnGameUpdate:err]; } }