<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <meta http-equiv="Content-Style-Type" content="text/css" />
  <meta name="generator" content="pandoc" />
  <title></title>
  <style type="text/css">code{white-space: pre;}</style>
</head>
<body>
<p>Hi Marc,</p>
<p>On 2016-11-05 01:43, Marc K wrote:</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> Previously, cover art of upnp media was only shown in the browser, but
 not in the player.

 Signed-off-by: Marc K <morckx@gmail.com>
 ---
  .../src/org/videolan/vlc/gui/helpers/AudioUtil.java       | 15 +++++++++++++--
  1 file changed, 13 insertions(+), 2 deletions(-)

 diff --git a/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.java b/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.java
 index 846f996..692f073 100644
 --- a/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.java
 +++ b/vlc-android/src/org/videolan/vlc/gui/helpers/AudioUtil.java
 @@ -42,11 +42,13 @@ import org.videolan.vlc.R;
  import org.videolan.vlc.VLCApplication;
  import org.videolan.vlc.media.MediaUtils;
  import org.videolan.vlc.util.AndroidDevices;
 +import org.videolan.vlc.util.HttpImageLoader;
  import org.videolan.vlc.util.MurmurHash;
  import org.videolan.vlc.util.Permissions;
  import org.videolan.vlc.util.Util;

  import java.io.BufferedOutputStream;
 +import java.io.InputStream;
  import java.io.File;
  import java.io.FileOutputStream;
  import java.io.FilenameFilter;
 @@ -227,6 +229,17 @@ public class AudioUtil {
              }

              return artworkURL;
 +        } else if (artworkURL != null && artworkURL.startsWith("http://")) {
 +            try {
 +                File outputFile = outputFile = File.createTempFile("vlc", ".jpg", context.getCacheDir());
 +                FileOutputStream fos = new FileOutputStream(outputFile);
 +                if (HttpImageLoader.downloadBitmap(artworkURL).compress(CompressFormat.JPEG, 90, fos)) {</code></pre>
</blockquote>
<p>Given that <code>HttpImageLoader.downloadBitmap</code> can return <code>null</code> to signal an error, the above suffers from a potential <em>null-pointer-exception</em>.</p>
<p>I think it is more appropriate to handle such case gracefully, than to rely on something higher in the stack to catch the exception (potentially on the expense of alternative handlers not having the opportunity to kick in).</p>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;color:#500050">
<pre><code> +                    fos.close();
 +                    return(outputFile.getPath());
 +                }
 +            } catch (IOException e) {
 +                Log.d("ImageManager", "Error: " + e);
 +            }
          }
          return null;
      }
 @@ -322,8 +335,6 @@ public class AudioUtil {
                  if (cacheFile.exists()) {
                      if (cacheFile.length() > 0)
                          coverPath = cachePath;
 -                    else
 -                        return null;
                  }
              }

 -- 
 2.9.3</code></pre>
</blockquote>
</body>
</html>