am 48956f26: am f51d7015: Merge "Lockup in the print spooler." into lmp-mr1-dev

* commit '48956f266df46bc852c8c2886f16dbb7ac61b3fe':
  Lockup in the print spooler.
This commit is contained in:
Svet Ganov
2014-11-25 18:45:32 +00:00
committed by Android Git Automerger
4 changed files with 33 additions and 13 deletions

View File

@@ -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;

View File

@@ -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();

View File

@@ -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> {

View File

@@ -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