* commit '48956f266df46bc852c8c2886f16dbb7ac61b3fe': Lockup in the print spooler.
This commit is contained in:
@@ -106,12 +106,26 @@ public final class PageContentRepository {
|
||||
mRenderer.close(callback);
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
public void destroy(final Runnable callback) {
|
||||
if (mState == STATE_OPENED) {
|
||||
close(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
destroy(callback);
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
mState = STATE_DESTROYED;
|
||||
if (DEBUG) {
|
||||
Log.i(LOG_TAG, "STATE_DESTROYED");
|
||||
}
|
||||
mRenderer.destroy();
|
||||
|
||||
if (callback != null) {
|
||||
callback.run();
|
||||
}
|
||||
}
|
||||
|
||||
public void startPreload(int firstShownPage, int lastShownPage) {
|
||||
@@ -158,7 +172,7 @@ public final class PageContentRepository {
|
||||
try {
|
||||
if (mState != STATE_DESTROYED) {
|
||||
mCloseGuard.warnIfOpen();
|
||||
destroy();
|
||||
destroy(null);
|
||||
}
|
||||
} finally {
|
||||
super.finalize();
|
||||
@@ -455,6 +469,10 @@ public final class PageContentRepository {
|
||||
public void close(final Runnable callback) {
|
||||
cancelAllRendering();
|
||||
|
||||
if (mOpenTask != null) {
|
||||
mOpenTask.cancel();
|
||||
}
|
||||
|
||||
new AsyncTask<Void, Void, Void>() {
|
||||
@Override
|
||||
protected void onPreExecute() {
|
||||
@@ -492,10 +510,6 @@ public final class PageContentRepository {
|
||||
mContext.unbindService(AsyncRenderer.this);
|
||||
}
|
||||
|
||||
if (mOpenTask != null) {
|
||||
mOpenTask.cancel();
|
||||
}
|
||||
|
||||
mPageContentCache.invalidate();
|
||||
mPageContentCache.clear();
|
||||
mDestroyed = true;
|
||||
|
||||
@@ -493,13 +493,13 @@ public final class PageAdapter extends Adapter {
|
||||
return selectedPages;
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
mPageContentRepository.destroy();
|
||||
public void destroy(Runnable callback) {
|
||||
mCloseGuard.close();
|
||||
mState = STATE_DESTROYED;
|
||||
if (DEBUG) {
|
||||
Log.i(LOG_TAG, "STATE_DESTROYED");
|
||||
}
|
||||
mPageContentRepository.destroy(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -507,7 +507,7 @@ public final class PageAdapter extends Adapter {
|
||||
try {
|
||||
if (mState != STATE_DESTROYED) {
|
||||
mCloseGuard.warnIfOpen();
|
||||
destroy();
|
||||
destroy(null);
|
||||
}
|
||||
} finally {
|
||||
super.finalize();
|
||||
|
||||
@@ -1635,9 +1635,15 @@ public class PrintActivity extends Activity implements RemotePrintDocument.Updat
|
||||
mSpoolerProvider.destroy();
|
||||
mPrintedDocument.finish();
|
||||
mPrintedDocument.destroy();
|
||||
mPrintPreviewController.destroy();
|
||||
mPrintPreviewController.destroy(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finish();
|
||||
}
|
||||
});
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
finish();
|
||||
}
|
||||
|
||||
private final class SpinnerItem<T> {
|
||||
|
||||
@@ -192,10 +192,10 @@ class PrintPreviewController implements MutexFileProvider.OnReleaseRequestCallba
|
||||
});
|
||||
}
|
||||
|
||||
public void destroy() {
|
||||
public void destroy(Runnable callback) {
|
||||
mHandler.cancelQueuedOperations();
|
||||
mRecyclerView.setAdapter(null);
|
||||
mPageAdapter.destroy();
|
||||
mPageAdapter.destroy(callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user