diff options
3 files changed, 23 insertions, 3 deletions
diff --git a/src/com/cyanogenmod/filemanager/adapters/FileSystemObjectAdapter.java b/src/com/cyanogenmod/filemanager/adapters/FileSystemObjectAdapter.java index 2685cf24..dac15d43 100644 --- a/src/com/cyanogenmod/filemanager/adapters/FileSystemObjectAdapter.java +++ b/src/com/cyanogenmod/filemanager/adapters/FileSystemObjectAdapter.java @@ -204,7 +204,8 @@ public class FileSystemObjectAdapter FileSystemObject fso = getItem(position); - Drawable dwIcon = this.mIconHolder.getDrawable(MimeTypeHelper.getIcon(getContext(), fso)); + Drawable dwIcon = this.mIconHolder.getDrawable( + MimeTypeHelper.getIcon(getContext(), fso, true)); mIconHolder.loadDrawable(viewHolder.mIvIcon, fso, dwIcon); viewHolder.mTvName.setText(fso.getName()); diff --git a/src/com/cyanogenmod/filemanager/util/AmbiguousExtensionHelper.java b/src/com/cyanogenmod/filemanager/util/AmbiguousExtensionHelper.java index 3aaeb691..3b09367b 100644 --- a/src/com/cyanogenmod/filemanager/util/AmbiguousExtensionHelper.java +++ b/src/com/cyanogenmod/filemanager/util/AmbiguousExtensionHelper.java @@ -74,6 +74,8 @@ public abstract class AmbiguousExtensionHelper { } } catch (RuntimeException e) { Log.e(TAG, "Unable to open 3GP file to determine mimetype"); + } finally { + retriever.release(); } // Default to video 3gp if the file is unreadable as this was the default before // ambiguous resolution support was added. diff --git a/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java b/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java index 36874626..1ef77ed4 100644 --- a/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java +++ b/src/com/cyanogenmod/filemanager/util/MimeTypeHelper.java @@ -265,6 +265,10 @@ public final class MimeTypeHelper { * @return String The associated mime/type icon resource identifier */ public static final String getIcon(Context context, FileSystemObject fso) { + return getIcon(context, fso, false); + } + + public static final String getIcon(Context context, FileSystemObject fso, boolean firstFound) { //Ensure that mime types are loaded if (sMimeTypes == null) { loadMimeTypes(context); @@ -288,7 +292,7 @@ public final class MimeTypeHelper { //Get the extension and delivery String ext = FileHelper.getExtension(fso); if (ext != null) { - MimeTypeInfo mimeTypeInfo = getMimeTypeInternal(fso, ext); + MimeTypeInfo mimeTypeInfo = getMimeTypeInternal(fso, ext, firstFound); if (mimeTypeInfo != null) { // Create a new drawable @@ -434,6 +438,13 @@ public final class MimeTypeHelper { private static final MimeTypeInfo getMimeTypeInternal(FileSystemObject fso, String ext) { return getMimeTypeInternal(fso.getFullPath(), ext); } + + private static final MimeTypeInfo getMimeTypeInternal(FileSystemObject fso, + String ext, + boolean firstFound) { + return getMimeTypeInternal(fso.getFullPath(), ext, firstFound); + } + /** * Get the MimeTypeInfo that describes this file. * @param absolutePath The absolute path of the file. @@ -441,10 +452,16 @@ public final class MimeTypeHelper { * @return The MimeTypeInfo object that describes this file, or null if it cannot be retrieved. */ private static final MimeTypeInfo getMimeTypeInternal(String absolutePath, String ext) { + return getMimeTypeInternal(absolutePath, ext, false); + } + + private static final MimeTypeInfo getMimeTypeInternal(String absolutePath, + String ext, + boolean firstFound) { MimeTypeInfo mimeTypeInfo = null; ArrayList<MimeTypeInfo> mimeTypeInfoList = sMimeTypes.get(ext.toLowerCase(Locale.ROOT)); // Multiple mimetypes map to the same extension, try to resolve it. - if (mimeTypeInfoList != null && mimeTypeInfoList.size() > 1) { + if (mimeTypeInfoList != null && mimeTypeInfoList.size() > 1 && !firstFound) { if (absolutePath != null) { String mimeType = getAmbiguousExtensionMimeType(absolutePath, ext); mimeTypeInfo = sExtensionMimeTypes.get(ext + mimeType); |
