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

Commit 518b9dd9 authored by Svetoslav's avatar Svetoslav Committed by Android Git Automerger
Browse files

am a2201272: Merge "Fix a print spooler crash when printing." into lmp-dev

* commit 'a2201272b5b27f3ac9cf90d6332e81fb474c1dbb':
  Fix a print spooler crash when printing.
parents 6826e9bd 451bf373
Loading
Loading
Loading
Loading
+10 −6
Original line number Diff line number Diff line
@@ -110,13 +110,13 @@ public final class PageContentRepository {
        mRenderer.close(callback);
    }

    public void destroy() {
    public void destroy(Runnable callback) {
        throwIfNotClosed();
        mState = STATE_DESTROYED;
        if (DEBUG) {
            Log.i(LOG_TAG, "STATE_DESTROYED");
        }
        doDestroy();
        doDestroy(callback);
    }

    public void startPreload(int firstShownPage, int lastShownPage) {
@@ -163,19 +163,19 @@ public final class PageContentRepository {
        try {
            if (mState != STATE_DESTROYED) {
                mCloseGuard.warnIfOpen();
                doDestroy();
                doDestroy(null);
            }
        } finally {
            super.finalize();
        }
    }

    private void doDestroy() {
    private void doDestroy(Runnable callback) {
        mState = STATE_DESTROYED;
        if (DEBUG) {
            Log.i(LOG_TAG, "STATE_DESTROYED");
        }
        mRenderer.destroy();
        mRenderer.destroy(callback);
    }

    private void throwIfNotOpened() {
@@ -536,7 +536,7 @@ public final class PageContentRepository {
            }.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
        }

        public void destroy() {
        public void destroy(final Runnable callback) {
            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Void doInBackground(Void... params) {
@@ -551,6 +551,10 @@ public final class PageContentRepository {
                    }
                    mPageContentCache.invalidate();
                    mPageContentCache.clear();
                    if (callback != null) {
                        callback.run();
                    }

                }
            }.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
        }
+5 −5
Original line number Diff line number Diff line
@@ -488,9 +488,9 @@ public final class PageAdapter extends Adapter implements
        return selectedPages;
    }

    public void destroy() {
    public void destroy(Runnable callback) {
        throwIfNotClosed();
        doDestroy();
        doDestroy(callback);
    }

    @Override
@@ -498,7 +498,7 @@ public final class PageAdapter extends Adapter implements
        try {
            if (mState != STATE_DESTROYED) {
                mCloseGuard.warnIfOpen();
                doDestroy();
                doDestroy(null);
            }
        } finally {
            super.finalize();
@@ -745,8 +745,8 @@ public final class PageAdapter extends Adapter implements
        mPageContentRepository.stopPreload();
    }

    private void doDestroy() {
        mPageContentRepository.destroy();
    private void doDestroy(Runnable callback) {
        mPageContentRepository.destroy(callback);
        mCloseGuard.close();
        mState = STATE_DESTROYED;
        if (DEBUG) {
+8 −2
Original line number Diff line number Diff line
@@ -1562,13 +1562,19 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
        if (mState != STATE_INITIALIZING) {
            mProgressMessageController.cancel();
            mPrinterRegistry.setTrackedPrinter(null);
            mPrintPreviewController.destroy();
            mSpoolerProvider.destroy();
            mPrintedDocument.finish();
            mPrintedDocument.destroy();
            mPrintPreviewController.destroy(new Runnable() {
                @Override
                public void run() {
                    finish();
                }
            });
        } else {
            finish();
        }
    }

    private final class SpinnerItem<T> {
        final T value;
+10 −5
Original line number Diff line number Diff line
@@ -192,12 +192,15 @@ class PrintPreviewController implements MutexFileProvider.OnReleaseRequestCallba
        });
    }

    public void destroy() {
    public void destroy(Runnable callback) {
        if (mPageAdapter.isOpened()) {
            mPageAdapter.close(null);
            Message operation = mHandler.obtainMessage(MyHandler.MSG_CLOSE);
            mHandler.enqueueOperation(operation);
        }
        mRecyclerView.setAdapter(null);
        mPageAdapter.destroy();

        Message operation = mHandler.obtainMessage(MyHandler.MSG_DESTROY);
        operation.obj = callback;
        mHandler.enqueueOperation(operation);
    }

    @Override
@@ -292,7 +295,9 @@ class PrintPreviewController implements MutexFileProvider.OnReleaseRequestCallba
                } break;

                case MSG_DESTROY: {
                    mPageAdapter.destroy();
                    Runnable callback = (Runnable) message.obj;
                    mRecyclerView.setAdapter(null);
                    mPageAdapter.destroy(callback);
                    handleNextOperation();
                } break;