From 6a2d911699a3d046169bfad01105824119c29e0c Mon Sep 17 00:00:00 2001 From: Giacomo Zama Date: Sun, 25 Apr 2021 17:54:08 +0200 Subject: [PATCH] Introduced a workaround for an UnsupportedOperationException in JAudioTagger that occurs while saving non-linked artworks of flac songs, causing the Tag Editor to crash. --- .../tageditor/AbsTagEditorActivity.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java b/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java index f9704e5..8f67236 100644 --- a/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java +++ b/app/src/main/java/com/maxfour/music/ui/activities/tageditor/AbsTagEditorActivity.java @@ -41,9 +41,11 @@ import org.jaudiotagger.audio.exceptions.CannotWriteException; import org.jaudiotagger.audio.exceptions.InvalidAudioFrameException; import org.jaudiotagger.audio.exceptions.ReadOnlyFileException; +import org.jaudiotagger.audio.flac.metadatablock.MetadataBlockDataPicture; import org.jaudiotagger.tag.FieldKey; import org.jaudiotagger.tag.Tag; import org.jaudiotagger.tag.TagException; +import org.jaudiotagger.tag.flac.FlacTag; import org.jaudiotagger.tag.images.Artwork; import org.jaudiotagger.tag.images.ArtworkFactory; @@ -317,7 +319,22 @@ protected String[] doInBackground(LoadingInfo... params) { deletedArtwork = true; } else if (artwork != null) { tag.deleteArtworkField(); - tag.setField(artwork); + if (tag instanceof FlacTag && !artwork.isLinked()) { + // Workaround for a JAudioTagger bug + MetadataBlockDataPicture field = new MetadataBlockDataPicture( + artwork.getBinaryData(), + artwork.getPictureType(), + artwork.getMimeType(), + artwork.getDescription(), + artwork.getWidth(), + artwork.getHeight(), + 0, + 0 + ); + tag.setField(field); + } else { + tag.setField(artwork); + } wroteArtwork = true; } }