Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4bb1104c authored by Matt Casey's avatar Matt Casey Committed by Android (Google) Code Review
Browse files

Merge "Always save long screenshot temp file to the same place" into sc-dev

parents c9af2bc3 d687b131
Loading
Loading
Loading
Loading
+10 −19
Original line number Diff line number Diff line
@@ -111,30 +111,21 @@ class ImageExporter {
    }

    /**
     * Stores the given Bitmap to a temp file.
     * Writes the given Bitmap to outputFile.
     */
    ListenableFuture<File> exportAsTempFile(Executor executor, Bitmap bitmap) {
    ListenableFuture<File> exportToRawFile(Executor executor, Bitmap bitmap,
            final File outputFile) {
        return CallbackToFutureAdapter.getFuture(
                (completer) -> {
                    executor.execute(() -> {
                        File cachePath;
                        try {
                            cachePath = File.createTempFile("long_screenshot_cache_", ".tmp");
                            try (FileOutputStream stream = new FileOutputStream(cachePath)) {
                        try (FileOutputStream stream = new FileOutputStream(outputFile)) {
                            bitmap.compress(mCompressFormat, mQuality, stream);
                            completer.set(outputFile);
                        } catch (IOException e) {
                                if (cachePath.exists()) {
                            if (outputFile.exists()) {
                                //noinspection ResultOfMethodCallIgnored
                                    cachePath.delete();
                                    cachePath = null;
                                }
                                completer.setException(e);
                                outputFile.delete();
                            }
                            if (cachePath != null) {
                                completer.set(cachePath);
                            }
                        } catch (IOException e) {
                            // Failed to create a new file
                            completer.setException(e);
                        }
                    });
+2 −2
Original line number Diff line number Diff line
@@ -228,8 +228,8 @@ public class LongScreenshotActivity extends Activity {
                });

        // Immediately export to temp image file for saved state
        mCacheSaveFuture = mImageExporter.exportAsTempFile(mBackgroundExecutor,
                mLongScreenshot.toBitmap());
        mCacheSaveFuture = mImageExporter.exportToRawFile(mBackgroundExecutor,
                mLongScreenshot.toBitmap(), new File(getCacheDir(), "long_screenshot_cache.png"));
        mCacheSaveFuture.addListener(() -> {
            try {
                // Get the temp file path to persist, used in onSavedInstanceState