From da9faf7efbac392018862970fcecc9743d00bb60 Mon Sep 17 00:00:00 2001 From: TwistedUmbrella Date: Thu, 13 Feb 2014 15:56:49 -0500 Subject: [PATCH] Enable free-floating VMU to allow for bigger size parameters --- .../reicast/emulator/emu/GL2JNIActivity.java | 37 ++++++++++--------- .../reicast/emulator/emu/OnScreenMenu.java | 16 ++------ .../com/reicast/emulator/periph/VmuLcd.java | 2 +- 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/shell/android/src/com/reicast/emulator/emu/GL2JNIActivity.java b/shell/android/src/com/reicast/emulator/emu/GL2JNIActivity.java index c2541f879..926ae4ed3 100644 --- a/shell/android/src/com/reicast/emulator/emu/GL2JNIActivity.java +++ b/shell/android/src/com/reicast/emulator/emu/GL2JNIActivity.java @@ -37,7 +37,6 @@ public class GL2JNIActivity extends Activity { OnScreenMenu menu; PopupWindow popUp; PopupWindow vmuPop; - public static Activity mActivity; MOGAInput moga = new MOGAInput(); private SharedPreferences prefs; static String[] portId = { "_A", "_B", "_C", "_D" }; @@ -64,10 +63,6 @@ public class GL2JNIActivity extends Activity { ConfigureFragment.getCurrentConfiguration(prefs); menu = new OnScreenMenu(GL2JNIActivity.this, prefs); popUp = menu.createPopup(); - if (prefs.getBoolean("vmu_always_on", false)) { - vmuPop = menu.generateVMU(); - } - mActivity = GL2JNIActivity.this; /* * try { //int rID = @@ -291,8 +286,7 @@ public class GL2JNIActivity extends Activity { JNIdc.setupMic(sip); } - //setup vmu screen - JNIdc.setupVmu(menu.getVmuLcd()); + vmuPop = menu.generateVMU(); } private void runCompatibilityMode() { @@ -507,6 +501,18 @@ public class GL2JNIActivity extends Activity { LayoutParams.WRAP_CONTENT); } + public void toggleVMU(boolean show) { + if (vmuPop != null) { + if (!vmuPop.isShowing() && show) { + vmuPop.showAtLocation(mView, Gravity.TOP | Gravity.RIGHT, 20, 20); + vmuPop.update(LayoutParams.WRAP_CONTENT, + LayoutParams.WRAP_CONTENT); + } else if (!prefs.getBoolean("vmu_always_on", false) && !show) { + vmuPop.dismiss(); + } + } + } + public void displayConfig(PopupWindow popUpConfig) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { popUpConfig.showAtLocation(mView, Gravity.BOTTOM, 0, 60); @@ -575,18 +581,13 @@ public class GL2JNIActivity extends Activity { } private boolean showMenu() { - if (prefs.getBoolean("vmu_always_on", false)) { - if (vmuPop != null && !vmuPop.isShowing()) { - vmuPop.showAtLocation(mView, Gravity.NO_GRAVITY, 20, 20); - vmuPop.update(LayoutParams.WRAP_CONTENT, - LayoutParams.WRAP_CONTENT); - } - } - if (!popUp.isShowing()) { - displayPopUp(popUp); - } else { - if (!menu.dismissPopUps()) { + if (!menu.dismissPopUps()) { + if (!popUp.isShowing()) { + displayPopUp(popUp); + toggleVMU(true); + } else { popUp.dismiss(); + toggleVMU(false); } } return true; diff --git a/shell/android/src/com/reicast/emulator/emu/OnScreenMenu.java b/shell/android/src/com/reicast/emulator/emu/OnScreenMenu.java index 5c9cd7670..cc733759e 100644 --- a/shell/android/src/com/reicast/emulator/emu/OnScreenMenu.java +++ b/shell/android/src/com/reicast/emulator/emu/OnScreenMenu.java @@ -30,7 +30,6 @@ public class OnScreenMenu { private boolean widescreen; private boolean limitframes; private boolean audiodisabled; - private VmuLcd vmuLcd; private Vector popups; @@ -51,14 +50,15 @@ public class OnScreenMenu { } public PopupWindow generateVMU() { + VmuLcd vmuLcd = new VmuLcd(mContext); PopupWindow vmuPop = new PopupWindow(mContext); - int p = OnScreenMenu.getPixelsFromDp(60, mContext); + int p = OnScreenMenu.getPixelsFromDp(72, mContext); LayoutParams params = new LayoutParams(p, p); LinearLayout vlay = new LinearLayout(mContext); vlay.setOrientation(LinearLayout.HORIZONTAL); - vmuLcd = new VmuLcd(mContext); vlay.addView(vmuLcd, params); vmuPop.setContentView(vlay); + JNIdc.setupVmu(vmuLcd); return vmuPop; } @@ -71,14 +71,10 @@ public class OnScreenMenu { LinearLayout hlay = new LinearLayout(mContext); hlay.setOrientation(LinearLayout.HORIZONTAL); - - if (!prefs.getBoolean("vmu_always_on", false)) { - vmuLcd = new VmuLcd(mContext); - hlay.addView(vmuLcd, params); - } hlay.addView(addbut(R.drawable.up, new OnClickListener() { public void onClick(View v) { + mContext.toggleVMU(false); popups.remove(popUp); popUp.dismiss(); } @@ -338,8 +334,4 @@ public class OnScreenMenu { return but; } - - public VmuLcd getVmuLcd(){ - return vmuLcd; - } } diff --git a/shell/android/src/com/reicast/emulator/periph/VmuLcd.java b/shell/android/src/com/reicast/emulator/periph/VmuLcd.java index 57bb79a2a..6025446d0 100644 --- a/shell/android/src/com/reicast/emulator/periph/VmuLcd.java +++ b/shell/android/src/com/reicast/emulator/periph/VmuLcd.java @@ -21,7 +21,7 @@ public class VmuLcd extends View { public VmuLcd(Context context) { super(context); - scale = (float)OnScreenMenu.getPixelsFromDp(60, getContext()) / w; + scale = (float)OnScreenMenu.getPixelsFromDp(72, getContext()) / w; Log.d("VmuLcd", "scale: "+scale); }