mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-25 23:29:44 -06:00
Merge pull request #12688 from JosJuice/android-alert-synchronize
Android: Fix race condition in displayAlertMsg
This commit is contained in:
@ -21,6 +21,7 @@ import org.dolphinemu.dolphinemu.utils.Log;
|
|||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.concurrent.Semaphore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class which contains methods that interact
|
* Class which contains methods that interact
|
||||||
@ -28,7 +29,7 @@ import java.util.LinkedHashMap;
|
|||||||
*/
|
*/
|
||||||
public final class NativeLibrary
|
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 boolean sIsShowingAlertMessage = false;
|
||||||
|
|
||||||
private static WeakReference<EmulationActivity> sEmulationActivity = new WeakReference<>(null);
|
private static WeakReference<EmulationActivity> sEmulationActivity = new WeakReference<>(null);
|
||||||
@ -491,16 +492,13 @@ public final class NativeLibrary
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Wait for the lock to notify that it is complete.
|
// Wait for the lock to notify that it is complete.
|
||||||
synchronized (sAlertMessageLock)
|
|
||||||
{
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
sAlertMessageLock.wait();
|
sAlertMessageSemaphore.acquire();
|
||||||
}
|
}
|
||||||
catch (Exception ignored)
|
catch (InterruptedException ignored)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (yesNo)
|
if (yesNo)
|
||||||
{
|
{
|
||||||
@ -519,10 +517,7 @@ public final class NativeLibrary
|
|||||||
|
|
||||||
public static void NotifyAlertMessageLock()
|
public static void NotifyAlertMessageLock()
|
||||||
{
|
{
|
||||||
synchronized (sAlertMessageLock)
|
sAlertMessageSemaphore.release();
|
||||||
{
|
|
||||||
sAlertMessageLock.notify();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setEmulationActivity(EmulationActivity emulationActivity)
|
public static void setEmulationActivity(EmulationActivity emulationActivity)
|
||||||
|
Reference in New Issue
Block a user