diff options
| author | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-06-24 21:39:47 -0500 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@gmail.com> | 2015-06-24 21:39:47 -0500 |
| commit | 521f6e89c31811103a96da8e9c32820aa5b64ee9 (patch) | |
| tree | f41760ec5c240bb5737ab1e8819a063b1f6abc75 /Source/Android/app/src/main/java | |
| parent | 2a5dd69c72677154215564aa837bb6bdc0213dea (diff) | |
| parent | 7935c1c57a264158bbc8e0bda97fedaa8cbba96a (diff) | |
Merge pull request #2624 from sigmabeta/android-save-screenshot
Android: Save screenshot at end of an emulation session.
Diffstat (limited to 'Source/Android/app/src/main/java')
5 files changed, 28 insertions, 18 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java index d8b1b6c112..c9efb0c790 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java @@ -274,6 +274,12 @@ public final class NativeLibrary }); } + public static void endEmulationActivity() + { + Log.v("DolphinEmu", "Ending EmulationActivity."); + mEmulationActivity.finish(); + } + public static void setEmulationActivity(EmulationActivity emulationActivity) { Log.v("DolphinEmu", "Registering EmulationActivity."); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java index cb6b17c3d5..b569785d35 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java @@ -150,7 +150,11 @@ public final class EmulationActivity extends AppCompatActivity else { // Let the system handle it; i.e. quit the activity TODO or show "are you sure?" dialog. - super.onBackPressed(); + EmulationFragment fragment = (EmulationFragment) getFragmentManager() + .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); + fragment.notifyEmulationStopped(); + + NativeLibrary.StopEmulation(); } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java index d296c5e023..a9a7be930e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java @@ -79,9 +79,13 @@ public final class GameAdapter extends RecyclerView.Adapter<GameViewHolder> impl { if (mCursor.moveToPosition(position)) { + String screenPath = mCursor.getString(GameDatabase.GAME_COLUMN_SCREENSHOT_PATH); + Picasso.with(holder.imageScreenshot.getContext()) + .invalidate(screenPath); + // Fill in the view contents. Picasso.with(holder.imageScreenshot.getContext()) - .load(mCursor.getString(GameDatabase.GAME_COLUMN_SCREENSHOT_PATH)) + .load(screenPath) .fit() .centerCrop() .error(R.drawable.no_banner) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java index 70dff7237e..9d23736cb6 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java @@ -119,7 +119,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C public void onDestroyView() { super.onDestroyView(); - if (getActivity().isFinishing()) + if (getActivity().isFinishing() && mEmulationStarted) { NativeLibrary.StopEmulation(); } @@ -195,6 +195,16 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C mEmulationRunning = false; } + /** + * Called by containing activity to tell the Fragment emulation is already stopping, + * so it doesn't try to stop emulation on its way to the garbage collector. + */ + public void notifyEmulationStopped() + { + mEmulationStarted = false; + mEmulationRunning = false; + } + private Runnable mEmulationRunner = new Runnable() { @Override diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java index ae52261b45..f3ef6f7514 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java @@ -113,21 +113,7 @@ public final class Game { ContentValues values = new ContentValues(); - // TODO Come up with a way of finding the most recent screenshot that doesn't involve counting files - String screenshotFolderPath = PATH_SCREENSHOT_FOLDER + gameId + "/"; - - // Count how many screenshots are available, so we can use the most recent one. - File screenshotFolder = new File(screenshotFolderPath.substring(screenshotFolderPath.indexOf('s') - 1)); - int screenCount = 0; - - if (screenshotFolder.isDirectory()) - { - screenCount = screenshotFolder.list().length; - } - - String screenPath = screenshotFolderPath - + gameId + "-" - + screenCount + ".png"; + String screenPath = PATH_SCREENSHOT_FOLDER + gameId + "/thumb.png"; values.put(GameDatabase.KEY_GAME_PLATFORM, platform); values.put(GameDatabase.KEY_GAME_TITLE, title); |
