Merge pull request #12688 from JosJuice/android-alert-synchronize

Android: Fix race condition in displayAlertMsg
This commit is contained in:
Admiral H. Curtiss 2024-04-13 01:40:30 +02:00 committed by GitHub
commit b623a36005
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 8 additions and 13 deletions

View File

@ -21,6 +21,7 @@ import org.dolphinemu.dolphinemu.utils.Log;
import java.lang.ref.WeakReference;
import java.util.LinkedHashMap;
import java.util.concurrent.Semaphore;
/**
* Class which contains methods that interact
@ -28,7 +29,7 @@ import java.util.LinkedHashMap;
*/
public final class NativeLibrary
{
private static final Object sAlertMessageLock = new Object();
private static final Semaphore sAlertMessageSemaphore = new Semaphore(0);
private static boolean sIsShowingAlertMessage = false;
private static WeakReference<EmulationActivity> sEmulationActivity = new WeakReference<>(null);
@ -491,15 +492,12 @@ public final class NativeLibrary
});
// Wait for the lock to notify that it is complete.
synchronized (sAlertMessageLock)
try
{
sAlertMessageSemaphore.acquire();
}
catch (InterruptedException ignored)
{
try
{
sAlertMessageLock.wait();
}
catch (Exception ignored)
{
}
}
if (yesNo)
@ -519,10 +517,7 @@ public final class NativeLibrary
public static void NotifyAlertMessageLock()
{
synchronized (sAlertMessageLock)
{
sAlertMessageLock.notify();
}
sAlertMessageSemaphore.release();
}
public static void setEmulationActivity(EmulationActivity emulationActivity)