Printing from two apps at the same time not working.
When printing from two apps at the same time the second print UI is getting stuck. There were a couple of issues here: AdapterView was not notifying for item selection if the data changes after scheduling a dalayed selection notification and the notification execution. The code assumed that a layout pass will occur and posponed the notification after the layout pass but it is not guaranteed that such a layout pass will occur. Now we delay only if a layout pass is being scheduled. Also when binding to the PDF rendering service the print spooler was using the same intent and as a result two print activites were getting the same renderer instance while they should get separate ones. Now we use different data in the intent to ensure we get separate renderer instances. Change-Id: I6aa7c7b041957804b4273549dd837a6d70064efc
This commit is contained in:
@@ -861,7 +861,8 @@ public abstract class AdapterView<T extends Adapter> extends ViewGroup {
|
||||
public void run() {
|
||||
mPendingSelectionNotifier = null;
|
||||
|
||||
if (mDataChanged) {
|
||||
if (mDataChanged && getViewRootImpl() != null
|
||||
&& getViewRootImpl().isLayoutRequested()) {
|
||||
// Data has changed between when this SelectionNotifier was
|
||||
// posted and now. Postpone the notification until the next
|
||||
// layout is complete and we run checkSelectionChanged().
|
||||
|
||||
@@ -24,6 +24,7 @@ import android.content.ServiceConnection;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Color;
|
||||
import android.graphics.drawable.BitmapDrawable;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.IBinder;
|
||||
import android.os.ParcelFileDescriptor;
|
||||
@@ -467,6 +468,7 @@ public final class PageContentRepository {
|
||||
protected void onPreExecute() {
|
||||
Intent intent = new Intent(PdfManipulationService.ACTION_GET_RENDERER);
|
||||
intent.setClass(mContext, PdfManipulationService.class);
|
||||
intent.setData(Uri.fromParts("fake-scheme", String.valueOf(hashCode()), null));
|
||||
mContext.bindService(intent, AsyncRenderer.this, Context.BIND_AUTO_CREATE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user