From ab8cd619d5bc11c2baca3a05996ef8b1007968b9 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Mon, 31 Aug 2020 18:38:54 +0200 Subject: [PATCH] Save cover image to file before copying to iPod Fixes #519 --- src/device/gpoddevice.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/device/gpoddevice.cpp b/src/device/gpoddevice.cpp index 1bc37f75b..d8d4558ce 100644 --- a/src/device/gpoddevice.cpp +++ b/src/device/gpoddevice.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include "core/logging.h" #include "core/application.h" @@ -181,16 +182,26 @@ bool GPodDevice::CopyToStorage(const CopyJob &job) { bool result = false; if (!job.metadata_.image().isNull()) { #if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) - result = itdb_track_set_thumbnails_from_data(track, job.metadata_.image().constBits(), job.metadata_.image().sizeInBytes()); - track->has_artwork = 1; + // Workaround, see issue: https://github.com/strawberrymusicplayer/strawberry/issues/519 + // result = itdb_track_set_thumbnails_from_data(track, job.metadata_.image().constBits(), job.metadata_.image().sizeInBytes()); + QTemporaryFile cover_file; + if (cover_file.open()) { + QImage image = job.metadata_.image(); + if (image.save(cover_file.fileName())) { + result = itdb_track_set_thumbnails(track, cover_file.fileName().toLocal8Bit().constData()); + if (result) track->has_artwork = 1; + } + cover_file.close(); + cover_file.remove(); + } #else result = itdb_track_set_thumbnails_from_data(track, job.metadata_.image().constBits(), job.metadata_.image().byteCount()); - track->has_artwork = 1; + if (result) track->has_artwork = 1; #endif } else if (!job.cover_source_.isEmpty()) { result = itdb_track_set_thumbnails(track, job.cover_source_.toLocal8Bit().constData()); - track->has_artwork = 1; + if (result) track->has_artwork = 1; } else { result = true;