diff options
4 files changed, 16 insertions, 14 deletions
diff --git a/android/src/com/artifex/mupdfdemo/BitmapHolder.java b/android/src/com/artifex/mupdfdemo/BitmapHolder.java index f563e897..5816e7bb 100644 --- a/android/src/com/artifex/mupdfdemo/BitmapHolder.java +++ b/android/src/com/artifex/mupdfdemo/BitmapHolder.java @@ -15,6 +15,10 @@ public class BitmapHolder { bm = abm; } + public synchronized void drop() { + bm = null; + } + public synchronized Bitmap getBm() { return bm; } diff --git a/android/src/com/artifex/mupdfdemo/MuPDFCore.java b/android/src/com/artifex/mupdfdemo/MuPDFCore.java index 1e5c0686..cf35be8d 100644 --- a/android/src/com/artifex/mupdfdemo/MuPDFCore.java +++ b/android/src/com/artifex/mupdfdemo/MuPDFCore.java @@ -119,13 +119,11 @@ public class MuPDFCore globals = 0; } - public synchronized Bitmap drawPage(BitmapHolder h, int page, + public synchronized Bitmap drawPage(int page, int pageW, int pageH, int patchX, int patchY, int patchW, int patchH) { gotoPage(page); - // Clear the reference out before creating the new bitmap - h.setBm(null); Bitmap bm = Bitmap.createBitmap(patchW, patchH, Config.ARGB_8888); drawPage(bm, pageW, pageH, patchX, patchY, patchW, patchH); return bm; diff --git a/android/src/com/artifex/mupdfdemo/MuPDFPageView.java b/android/src/com/artifex/mupdfdemo/MuPDFPageView.java index c975cc70..64877198 100644 --- a/android/src/com/artifex/mupdfdemo/MuPDFPageView.java +++ b/android/src/com/artifex/mupdfdemo/MuPDFPageView.java @@ -201,9 +201,9 @@ public class MuPDFPageView extends PageView { } @Override - protected Bitmap drawPage(BitmapHolder h, int sizeX, int sizeY, + protected Bitmap drawPage(int sizeX, int sizeY, int patchX, int patchY, int patchWidth, int patchHeight) { - return mCore.drawPage(h, mPageNumber, sizeX, sizeY, patchX, patchY, patchWidth, patchHeight); + return mCore.drawPage(mPageNumber, sizeX, sizeY, patchX, patchY, patchWidth, patchHeight); } @Override diff --git a/android/src/com/artifex/mupdfdemo/PageView.java b/android/src/com/artifex/mupdfdemo/PageView.java index 064ce3f8..8e784b24 100644 --- a/android/src/com/artifex/mupdfdemo/PageView.java +++ b/android/src/com/artifex/mupdfdemo/PageView.java @@ -140,7 +140,7 @@ public abstract class PageView extends ViewGroup { mPatchBmh = new BitmapHolder(); } - protected abstract Bitmap drawPage(BitmapHolder h, int sizeX, int sizeY, int patchX, int patchY, int patchWidth, int patchHeight); + protected abstract Bitmap drawPage(int sizeX, int sizeY, int patchX, int patchY, int patchWidth, int patchHeight); protected abstract Bitmap updatePage(BitmapHolder h, int sizeX, int sizeY, int patchX, int patchY, int patchWidth, int patchHeight); protected abstract LinkInfo[] getLinkInfo(); protected abstract TextWord[][] getText(); @@ -255,7 +255,7 @@ public abstract class PageView extends ViewGroup { // Render the page in the background mDrawEntire = new AsyncTask<Void,Void,Bitmap>() { protected Bitmap doInBackground(Void... v) { - return drawPage(mEntireBmh, mSize.x, mSize.y, 0, 0, mSize.x, mSize.y); + return drawPage(mSize.x, mSize.y, 0, 0, mSize.x, mSize.y); } protected void onPreExecute() { @@ -529,7 +529,7 @@ public abstract class PageView extends ViewGroup { // previously invoked task, and possibly for a different // area, so we cannot risk the bitmap generated by this task // being passed to it - mPatchBmh.setBm(null); + mPatchBmh.drop(); mPatchBmh = new BitmapHolder(); } @@ -544,13 +544,13 @@ public abstract class PageView extends ViewGroup { mDrawPatch = new AsyncTask<PatchInfo,Void,PatchInfo>() { protected PatchInfo doInBackground(PatchInfo... v) { if (v[0].completeRedraw) { - v[0].bm = drawPage(v[0].bmh, v[0].patchViewSize.x, v[0].patchViewSize.y, - v[0].patchArea.left, v[0].patchArea.top, - v[0].patchArea.width(), v[0].patchArea.height()); + v[0].bm = drawPage(v[0].patchViewSize.x, v[0].patchViewSize.y, + v[0].patchArea.left, v[0].patchArea.top, + v[0].patchArea.width(), v[0].patchArea.height()); } else { - v[0].bm = updatePage(v[0].bmh, v[0].patchViewSize.x, v[0].patchViewSize.y, - v[0].patchArea.left, v[0].patchArea.top, - v[0].patchArea.width(), v[0].patchArea.height()); + v[0].bm = updatePage(v[0].bmh, v[0].patchViewSize.x, v[0].patchViewSize.y, + v[0].patchArea.left, v[0].patchArea.top, + v[0].patchArea.width(), v[0].patchArea.height()); } return v[0]; |