Skip to content

Commit

Permalink
Merge pull request #12688 from JosJuice/android-alert-synchronize
Browse files Browse the repository at this point in the history
Android: Fix race condition in displayAlertMsg
  • Loading branch information
AdmiralCurtiss committed Apr 12, 2024
2 parents d58c998 + 9ca9d07 commit b623a36
Showing 1 changed file with 8 additions and 13 deletions.
Expand Up @@ -21,14 +21,15 @@

import java.lang.ref.WeakReference;
import java.util.LinkedHashMap;
import java.util.concurrent.Semaphore;

/**
* Class which contains methods that interact
* with the native side of the Dolphin code.
*/
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);
Expand Down Expand Up @@ -491,15 +492,12 @@ public static boolean displayAlertMsg(final String caption, final String text,
});

// 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)
Expand All @@ -519,10 +517,7 @@ public static boolean IsShowingAlertMessage()

public static void NotifyAlertMessageLock()
{
synchronized (sAlertMessageLock)
{
sAlertMessageLock.notify();
}
sAlertMessageSemaphore.release();
}

public static void setEmulationActivity(EmulationActivity emulationActivity)
Expand Down

0 comments on commit b623a36

Please sign in to comment.