From: Andy Scherzinger Date: Thu, 24 Sep 2015 07:46:58 +0000 (+0200) Subject: Merge branch 'release-1.8' of https://github.com/owncloud/android into material_buttons X-Git-Tag: beta-20151128~7^2~20 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/de13ecc4e3e15c4617f0a8e72e196ffad6a2e31a?hp=66aede2b3c152924295dff718ca2b5e69dd9961b Merge branch 'release-1.8' of https://github.com/owncloud/android into material_buttons --- diff --git a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java index ab0743a9..f0ecf767 100644 --- a/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java +++ b/src/com/owncloud/android/datamodel/ThumbnailsCacheManager.java @@ -195,10 +195,6 @@ public class ThumbnailsCacheManager { } protected void onPostExecute(Bitmap bitmap){ - if (isCancelled()) { - bitmap = null; - } - if (bitmap != null) { final ImageView imageView = mImageViewReference.get(); final ThumbnailGenerationTask bitmapWorkerTask = getBitmapWorkerTask(imageView); @@ -365,6 +361,7 @@ public class ThumbnailsCacheManager { if (bitmapData == null || bitmapData != file) { // Cancel previous task bitmapWorkerTask.cancel(true); + Log_OC.v(TAG, "Cancelled generation of thumbnail for a reused imageView"); } else { // The same work is already in progress return false; diff --git a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java index 8bae9380..a6839e55 100644 --- a/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java +++ b/src/com/owncloud/android/ui/adapter/LocalFileListAdapter.java @@ -37,6 +37,7 @@ import android.widget.TextView; import com.owncloud.android.R; import com.owncloud.android.datamodel.ThumbnailsCacheManager; +import com.owncloud.android.lib.common.utils.Log_OC; import com.owncloud.android.utils.BitmapUtils; import com.owncloud.android.utils.DisplayUtils; import com.owncloud.android.utils.MimetypeIconUtil; @@ -46,7 +47,9 @@ import com.owncloud.android.utils.MimetypeIconUtil; * in a local directory */ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { - + + private static final String TAG = LocalFileListAdapter.class.getSimpleName(); + private Context mContext; private File mDirectory; private File[] mFiles = null; @@ -104,6 +107,12 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { fileName.setText(name); ImageView fileIcon = (ImageView) view.findViewById(R.id.thumbnail); + + /** Cancellation needs do be checked and done before changing the drawable in fileIcon, or + * {@link ThumbnailsCacheManager#cancelPotentialWork} will NEVER cancel any task. + **/ + boolean allowedToCreateNewThumbnail = (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)); + if (!file.isDirectory()) { fileIcon.setImageResource(R.drawable.file); } else { @@ -145,7 +154,7 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { } else { // generate new Thumbnail - if (ThumbnailsCacheManager.cancelPotentialWork(file, fileIcon)) { + if (allowedToCreateNewThumbnail) { final ThumbnailsCacheManager.ThumbnailGenerationTask task = new ThumbnailsCacheManager.ThumbnailGenerationTask(fileIcon); if (thumbnail == null) { @@ -159,7 +168,9 @@ public class LocalFileListAdapter extends BaseAdapter implements ListAdapter { ); fileIcon.setImageDrawable(asyncDrawable); task.execute(file); - } + Log_OC.v(TAG, "Executing task to generate a new thumbnail"); + + } // else, already being generated, don't restart it } } else { fileIcon.setImageResource(MimetypeIconUtil.getFileTypeIconId(null, file.getName()));