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