Niedzielski has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/243980

Change subject: Fix Exception when sharing a fact
......................................................................

Fix Exception when sharing a fact

This patch is a partial revert of 3235488. ImageView may recycle its
Drawable. A reference cannot be held so a deep copy is needed.

Bug: T114658
Change-Id: I0a8802e2c6d9b81a85a4f7bdd7506067c4ab88e2
---
M app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java
M app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
2 files changed, 16 insertions(+), 8 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/apps/android/wikipedia 
refs/changes/80/243980/1

diff --git 
a/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java 
b/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java
index 161c086..7115a51 100644
--- a/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java
+++ b/app/src/main/java/org/wikipedia/page/leadimages/ImageViewWithFace.java
@@ -7,7 +7,6 @@
 import android.graphics.Paint;
 import android.graphics.PointF;
 import android.graphics.Rect;
-import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.media.FaceDetector;
 import android.support.annotation.NonNull;
@@ -43,12 +42,6 @@
 
     public void setOnImageLoadListener(@Nullable OnImageLoadListener listener) 
{
         this.listener = listener == null ? new DefaultListener() : listener;
-    }
-
-    @Nullable public Bitmap getImageBitmap() {
-        return getDrawable() instanceof BitmapDrawable
-             ? ((BitmapDrawable) getDrawable()).getBitmap()
-             : null;
     }
 
     @Override
diff --git 
a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java 
b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
index 8744daf..8710701 100755
--- a/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
+++ b/app/src/main/java/org/wikipedia/page/leadimages/LeadImagesHandler.java
@@ -2,6 +2,7 @@
 
 import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.Typeface;
 import android.graphics.drawable.Drawable;
@@ -157,7 +158,7 @@
     }
 
     @Nullable public Bitmap getLeadImageBitmap() {
-        return image.getImageBitmap();
+        return leadImagesEnabled ? newBitmapFromView(image) : null;
     }
 
     public boolean isLeadImageEnabled() {
@@ -235,6 +236,20 @@
                 / displayDensity), listener, sequence);
     }
 
+    // ideas from:
+    // 
http://stackoverflow.com/questions/2801116/converting-a-view-to-bitmap-without-displaying-it-in-android
+    // View has to be already displayed. Note: a copy of the ImageView's 
Drawable must be made in
+    // some fashion as it may be recycled. See T114658.
+    private Bitmap newBitmapFromView(ImageView view) {
+        // Define a bitmap with the same size as the view
+        Bitmap returnedBitmap = Bitmap.createBitmap(view.getWidth(), 
view.getHeight(),
+                Bitmap.Config.ARGB_8888);
+        // Bind a canvas to it
+        Canvas canvas = new Canvas(returnedBitmap);
+        view.draw(canvas);
+        return returnedBitmap;
+    }
+
     /**
      * Intermediate step in the layout process:
      * Recursive function that will dynamically size down the page title 
TextView if the page title

-- 
To view, visit https://gerrit.wikimedia.org/r/243980
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0a8802e2c6d9b81a85a4f7bdd7506067c4ab88e2
Gerrit-PatchSet: 1
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Niedzielski <sniedziel...@wikimedia.org>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to