Skip to content
Snippets Groups Projects
Commit 610de802 authored by Geoffrey Métais's avatar Geoffrey Métais
Browse files

Ensure we always restrict images size

parent f93d7771
No related branches found
No related tags found
No related merge requests found
......@@ -31,6 +31,7 @@ import org.videolan.vlc.gui.helpers.FloatingActionButtonBehavior;
import org.videolan.vlc.gui.preferences.PreferencesActivity;
import org.videolan.vlc.gui.video.MediaInfoAdapter;
import org.videolan.vlc.media.MediaUtils;
import org.videolan.vlc.util.KextensionsKt;
import org.videolan.vlc.util.Strings;
import org.videolan.vlc.util.VLCInstance;
import org.videolan.vlc.util.WeakHandler;
......@@ -48,6 +49,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
public class InfoActivity extends AudioPlayerContainerActivity implements View.OnClickListener {
public final static String TAG = "VLC/InfoActivity";
public final static String TAG_ITEM = "ML_ITEM";
public final static String TAG_FAB_VISIBILITY= "FAB";
......@@ -89,7 +91,7 @@ public class InfoActivity extends AudioPlayerContainerActivity implements View.O
WorkersKt.runIO(new Runnable() {
@Override
public void run() {
final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mItem.getArtworkMrl()), 0);
final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mItem.getArtworkMrl()), KextensionsKt.getScreenWidth(InfoActivity.this));
if (cover != null) {
mBinding.setCover(new BitmapDrawable(InfoActivity.this.getResources(), cover));
WorkersKt.runOnMainThread(new Runnable() {
......
......@@ -128,7 +128,7 @@ public class PlaylistActivity extends AudioPlayerContainerActivity implements IE
WorkersKt.runIO(new Runnable() {
@Override
public void run() {
final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mPlaylist.getArtworkMrl()), 0);
final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mPlaylist.getArtworkMrl()), getResources().getDimensionPixelSize(R.dimen.audio_browser_item_size));
if (cover != null) {
mBinding.setCover(new BitmapDrawable(PlaylistActivity.this.getResources(), cover));
WorkersKt.runOnMainThread(new Runnable() {
......
......@@ -263,7 +263,8 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher {
if (TextUtils.isEmpty(mw.artworkMrl)) {
setDefaultBackground()
} else {
val blurredCover = withContext(Dispatchers.IO) { UiTools.blurBitmap(AudioUtil.readCoverBitmap(Uri.decode(mw.artworkMrl), binding.contentLayout.width)) }
val width = if (binding.contentLayout.width > 0) binding.contentLayout.width else activity?.getScreenWidth() ?: return@launch
val blurredCover = withContext(Dispatchers.IO) { UiTools.blurBitmap(AudioUtil.readCoverBitmap(Uri.decode(mw.artworkMrl), width)) }
if (blurredCover !== null) {
val activity = activity as? AudioPlayerContainerActivity
if (activity === null) return@launch
......
......@@ -30,6 +30,8 @@ import org.videolan.vlc.util.ThumbnailsProvider
private val sBitmapCache = BitmapCache.getInstance()
private val sMedialibrary = VLCApplication.getMLInstance()
@Volatile
private var defaultImageWidth = 0
private const val TAG = "ImageLoader"
@MainThread
......@@ -110,15 +112,23 @@ private suspend fun getImage(v: View, item: MediaLibraryItem, binding: ViewDataB
binding.executePendingBindings()
binding.addOnRebindCallback(rebindCallbacks!!)
}
val image = if (!bindChanged) obtainBitmap(item, v.width) else null
val width = when {
v.width > 0 -> v.width
defaultImageWidth > 0 -> defaultImageWidth
else -> {
defaultImageWidth = v.context.resources.getDimensionPixelSize(if (v is ImageCardView) R.dimen.tv_grid_card_thumb_width else R.dimen.audio_browser_item_size)
defaultImageWidth
}
}
val image = if (!bindChanged) obtainBitmap(item, width) else null
if (!bindChanged) updateImageView(image, v, binding)
binding?.removeOnRebindCallback(rebindCallbacks!!)
}
private suspend fun obtainBitmap(item: MediaLibraryItem, width: Int) = withContext(Dispatchers.IO) {
when {
item is MediaWrapper -> ThumbnailsProvider.getMediaThumbnail(item, width)
item is Folder -> ThumbnailsProvider.getFolderThumbnail(item, width)
when (item) {
is MediaWrapper -> ThumbnailsProvider.getMediaThumbnail(item, width)
is Folder -> ThumbnailsProvider.getFolderThumbnail(item, width)
else -> AudioUtil.readCoverBitmap(Uri.decode(item.artworkMrl), width)
}
}
......
......@@ -43,6 +43,7 @@ import org.videolan.vlc.gui.tv.browser.BaseTvActivity;
import org.videolan.vlc.media.MediaUtils;
import org.videolan.vlc.util.AndroidDevices;
import org.videolan.vlc.util.Constants;
import org.videolan.vlc.util.KextensionsKt;
import org.videolan.vlc.util.Settings;
import org.videolan.vlc.util.WorkersKt;
import org.videolan.vlc.viewmodels.PlayerState;
......@@ -132,10 +133,11 @@ public class AudioPlayerActivity extends BaseTvActivity {
}
private void updateBackground() {
final int width = mBinding.albumCover.getWidth() > 0 ? mBinding.albumCover.getWidth() : KextensionsKt.getScreenWidth(this);
WorkersKt.runIO(new Runnable() {
@Override
public void run() {
final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mCurrentCoverArt), mBinding.albumCover.getWidth());
final Bitmap cover = AudioUtil.readCoverBitmap(Uri.decode(mCurrentCoverArt), width);
final Bitmap blurredCover = cover != null ? UiTools.blurBitmap(cover) : null;
WorkersKt.runOnMainThread(new Runnable() {
@Override
......
package org.videolan.vlc.util
import android.app.Activity
import android.content.Context
import android.content.SharedPreferences
import android.content.res.Resources
import android.net.Uri
import android.util.DisplayMetrics
import android.widget.TextView
import androidx.appcompat.widget.AppCompatTextView
import androidx.core.text.PrecomputedTextCompat
......@@ -25,7 +27,6 @@ import java.net.URI
import java.net.URISyntaxException
import java.util.*
import kotlin.coroutines.resume
import android.util.DisplayMetrics
......@@ -158,3 +159,8 @@ fun Int.toPixel(): Int {
val px = toFloat() * (metrics.densityDpi / 160f)
return Math.round(px)
}
fun Activity.getScreenWidth() : Int {
val dm = DisplayMetrics().also { windowManager.defaultDisplay.getMetrics(it) }
return dm.widthPixels
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment