mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-23 06:09:50 -06:00
Merge pull request #11088 from JosJuice/uicommon-set-enable-alert
Move a SetEnableAlert call to UICommon
This commit is contained in:
@ -511,59 +511,54 @@ public final class NativeLibrary
|
||||
Log.error("[NativeLibrary] Alert: " + text);
|
||||
final EmulationActivity emulationActivity = sEmulationActivity.get();
|
||||
boolean result = false;
|
||||
if (isWarning && emulationActivity != null && emulationActivity.isIgnoringWarnings())
|
||||
|
||||
// We can't use AlertMessages unless we have a non-null activity reference
|
||||
// and are allowed to block. As a fallback, we can use toasts.
|
||||
if (emulationActivity == null || nonBlocking)
|
||||
{
|
||||
return true;
|
||||
new Handler(Looper.getMainLooper()).post(
|
||||
() -> Toast.makeText(DolphinApplication.getAppContext(), text, Toast.LENGTH_LONG)
|
||||
.show());
|
||||
}
|
||||
else
|
||||
{
|
||||
// We can't use AlertMessages unless we have a non-null activity reference
|
||||
// and are allowed to block. As a fallback, we can use toasts.
|
||||
if (emulationActivity == null || nonBlocking)
|
||||
sIsShowingAlertMessage = true;
|
||||
|
||||
emulationActivity.runOnUiThread(() ->
|
||||
{
|
||||
new Handler(Looper.getMainLooper()).post(
|
||||
() -> Toast.makeText(DolphinApplication.getAppContext(), text, Toast.LENGTH_LONG)
|
||||
.show());
|
||||
FragmentManager fragmentManager = emulationActivity.getSupportFragmentManager();
|
||||
if (fragmentManager.isStateSaved())
|
||||
{
|
||||
// The activity is being destroyed, so we can't use it to display an AlertMessage.
|
||||
// Fall back to a toast.
|
||||
Toast.makeText(emulationActivity, text, Toast.LENGTH_LONG).show();
|
||||
NotifyAlertMessageLock();
|
||||
}
|
||||
else
|
||||
{
|
||||
AlertMessage.newInstance(caption, text, yesNo, isWarning)
|
||||
.show(fragmentManager, "AlertMessage");
|
||||
}
|
||||
});
|
||||
|
||||
// Wait for the lock to notify that it is complete.
|
||||
synchronized (sAlertMessageLock)
|
||||
{
|
||||
try
|
||||
{
|
||||
sAlertMessageLock.wait();
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
if (yesNo)
|
||||
{
|
||||
sIsShowingAlertMessage = true;
|
||||
|
||||
emulationActivity.runOnUiThread(() ->
|
||||
{
|
||||
FragmentManager fragmentManager = emulationActivity.getSupportFragmentManager();
|
||||
if (fragmentManager.isStateSaved())
|
||||
{
|
||||
// The activity is being destroyed, so we can't use it to display an AlertMessage.
|
||||
// Fall back to a toast.
|
||||
Toast.makeText(emulationActivity, text, Toast.LENGTH_LONG).show();
|
||||
NotifyAlertMessageLock();
|
||||
}
|
||||
else
|
||||
{
|
||||
AlertMessage.newInstance(caption, text, yesNo, isWarning)
|
||||
.show(fragmentManager, "AlertMessage");
|
||||
}
|
||||
});
|
||||
|
||||
// Wait for the lock to notify that it is complete.
|
||||
synchronized (sAlertMessageLock)
|
||||
{
|
||||
try
|
||||
{
|
||||
sAlertMessageLock.wait();
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (yesNo)
|
||||
{
|
||||
result = AlertMessage.getAlertResult();
|
||||
}
|
||||
result = AlertMessage.getAlertResult();
|
||||
}
|
||||
}
|
||||
|
||||
sIsShowingAlertMessage = false;
|
||||
return result;
|
||||
}
|
||||
|
@ -88,14 +88,12 @@ public final class EmulationActivity extends AppCompatActivity implements ThemeP
|
||||
private String[] mPaths;
|
||||
private boolean mRiivolution;
|
||||
private boolean mLaunchSystemMenu;
|
||||
private boolean mIgnoreWarnings;
|
||||
private static boolean sUserPausedEmulation;
|
||||
private boolean mMenuToastShown;
|
||||
|
||||
public static final String EXTRA_SELECTED_GAMES = "SelectedGames";
|
||||
public static final String EXTRA_RIIVOLUTION = "Riivolution";
|
||||
public static final String EXTRA_SYSTEM_MENU = "SystemMenu";
|
||||
public static final String EXTRA_IGNORE_WARNINGS = "IgnoreWarnings";
|
||||
public static final String EXTRA_USER_PAUSED_EMULATION = "sUserPausedEmulation";
|
||||
public static final String EXTRA_MENU_TOAST_SHOWN = "MenuToastShown";
|
||||
|
||||
@ -316,7 +314,6 @@ public final class EmulationActivity extends AppCompatActivity implements ThemeP
|
||||
mPaths = gameToEmulate.getStringArrayExtra(EXTRA_SELECTED_GAMES);
|
||||
mRiivolution = gameToEmulate.getBooleanExtra(EXTRA_RIIVOLUTION, false);
|
||||
mLaunchSystemMenu = gameToEmulate.getBooleanExtra(EXTRA_SYSTEM_MENU, false);
|
||||
mIgnoreWarnings = gameToEmulate.getBooleanExtra(EXTRA_IGNORE_WARNINGS, false);
|
||||
sUserPausedEmulation = gameToEmulate.getBooleanExtra(EXTRA_USER_PAUSED_EMULATION, false);
|
||||
mMenuToastShown = false;
|
||||
activityRecreated = false;
|
||||
@ -366,7 +363,6 @@ public final class EmulationActivity extends AppCompatActivity implements ThemeP
|
||||
mEmulationFragment.saveTemporaryState();
|
||||
}
|
||||
outState.putStringArray(EXTRA_SELECTED_GAMES, mPaths);
|
||||
outState.putBoolean(EXTRA_IGNORE_WARNINGS, mIgnoreWarnings);
|
||||
outState.putBoolean(EXTRA_USER_PAUSED_EMULATION, sUserPausedEmulation);
|
||||
outState.putBoolean(EXTRA_MENU_TOAST_SHOWN, mMenuToastShown);
|
||||
super.onSaveInstanceState(outState);
|
||||
@ -375,7 +371,6 @@ public final class EmulationActivity extends AppCompatActivity implements ThemeP
|
||||
protected void restoreState(Bundle savedInstanceState)
|
||||
{
|
||||
mPaths = savedInstanceState.getStringArray(EXTRA_SELECTED_GAMES);
|
||||
mIgnoreWarnings = savedInstanceState.getBoolean(EXTRA_IGNORE_WARNINGS);
|
||||
sUserPausedEmulation = savedInstanceState.getBoolean(EXTRA_USER_PAUSED_EMULATION);
|
||||
mMenuToastShown = savedInstanceState.getBoolean(EXTRA_MENU_TOAST_SHOWN);
|
||||
}
|
||||
@ -754,16 +749,6 @@ public final class EmulationActivity extends AppCompatActivity implements ThemeP
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isIgnoringWarnings()
|
||||
{
|
||||
return mIgnoreWarnings;
|
||||
}
|
||||
|
||||
public void setIgnoreWarnings(boolean value)
|
||||
{
|
||||
mIgnoreWarnings = value;
|
||||
}
|
||||
|
||||
public static boolean getHasUserPausedEmulation()
|
||||
{
|
||||
return sUserPausedEmulation;
|
||||
|
@ -13,6 +13,8 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig;
|
||||
|
||||
public final class AlertMessage extends DialogFragment
|
||||
{
|
||||
@ -82,7 +84,7 @@ public final class AlertMessage extends DialogFragment
|
||||
{
|
||||
builder.setNeutralButton(R.string.ignore_warning_alert_messages, (dialog, which) ->
|
||||
{
|
||||
emulationActivity.setIgnoreWarnings(true);
|
||||
BooleanSetting.MAIN_USE_PANIC_HANDLERS.setBoolean(NativeConfig.LAYER_CURRENT, false);
|
||||
dialog.dismiss();
|
||||
NativeLibrary.NotifyAlertMessageLock();
|
||||
});
|
||||
|
@ -329,6 +329,18 @@ public enum BooleanSetting implements AbstractBooleanSetting
|
||||
}
|
||||
}
|
||||
|
||||
public void setBoolean(int layerType, boolean newValue)
|
||||
{
|
||||
if (NativeConfig.isSettingSaveable(mFile, mSection, mKey))
|
||||
{
|
||||
NativeConfig.setBoolean(layerType, mFile, mSection, mKey, newValue);
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new UnsupportedOperationException("The old config system doesn't support layers");
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getBooleanGlobal()
|
||||
{
|
||||
return NativeConfig.getBoolean(NativeConfig.LAYER_ACTIVE, mFile, mSection, mKey, mDefaultValue);
|
||||
|
@ -8,6 +8,7 @@ public class NativeConfig
|
||||
public static final int LAYER_BASE = 1;
|
||||
public static final int LAYER_LOCAL_GAME = 2;
|
||||
public static final int LAYER_ACTIVE = 3;
|
||||
public static final int LAYER_CURRENT = 4;
|
||||
|
||||
public static native boolean isSettingSaveable(String file, String section, String key);
|
||||
|
||||
|
Reference in New Issue
Block a user