From 6428ae8b3ab5e24ba17c95d77d63d77b72c851af Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 25 Aug 2024 17:59:56 +0200 Subject: [PATCH] GPodDevice: Use own temporary file class QTemporaryFile keeps files open. Fixes #1527 --- src/device/gpoddevice.cpp | 16 +++++++--------- src/device/gpoddevice.h | 4 ++-- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/device/gpoddevice.cpp b/src/device/gpoddevice.cpp index 8b84c7db0..3c591afc1 100644 --- a/src/device/gpoddevice.cpp +++ b/src/device/gpoddevice.cpp @@ -36,12 +36,12 @@ #include #include #include -#include #include #include "core/logging.h" #include "core/shared_ptr.h" #include "core/application.h" +#include "core/temporaryfile.h" #include "collection/collectionbackend.h" #include "collection/collectionmodel.h" #include "connecteddevice.h" @@ -200,13 +200,11 @@ bool GPodDevice::CopyToStorage(const CopyJob &job, QString &error_text) { QString temp_path = QStandardPaths::writableLocation(QStandardPaths::TempLocation); #endif if (!QDir(temp_path).exists()) QDir().mkpath(temp_path); - SharedPtr cover_file = make_shared(temp_path + QStringLiteral("/track-albumcover-XXXXXX.jpg")); - cover_file->setAutoRemove(true); - if (cover_file->open()) { - cover_file->close(); + SharedPtr cover_file = make_shared(temp_path + QStringLiteral("/track-albumcover-XXXXXX.jpg")); + if (!cover_file->filename().isEmpty()) { const QImage &image = job.cover_image_; - if (image.save(cover_file->fileName(), "JPG")) { - const QByteArray filename = QFile::encodeName(cover_file->fileName()); + if (image.save(cover_file->filename(), "JPG")) { + const QByteArray filename = QFile::encodeName(cover_file->filename()); result = itdb_track_set_thumbnails(track, filename.constData()); if (result) { cover_files_ << cover_file; @@ -214,11 +212,11 @@ bool GPodDevice::CopyToStorage(const CopyJob &job, QString &error_text) { } } else { - qLog(Error) << "Failed to save" << cover_file->fileName() << cover_file->errorString(); + qLog(Error) << "Failed to save" << cover_file->filename(); } } else { - qLog(Error) << "Failed to open" << cover_file->fileName() << cover_file->errorString(); + qLog(Error) << "Failed to obtain temporary file"; } } else if (!job.cover_source_.isEmpty()) { diff --git a/src/device/gpoddevice.h b/src/device/gpoddevice.h index 583f64ba6..d299e9564 100644 --- a/src/device/gpoddevice.h +++ b/src/device/gpoddevice.h @@ -33,11 +33,11 @@ #include #include #include -#include #include "core/shared_ptr.h" #include "core/song.h" #include "core/musicstorage.h" +#include "core/temporaryfile.h" #include "connecteddevice.h" #include "gpodloader.h" @@ -97,7 +97,7 @@ class GPodDevice : public ConnectedDevice, public virtual MusicStorage { QMutex db_busy_; SongList songs_to_add_; SongList songs_to_remove_; - QList> cover_files_; + QList> cover_files_; }; #endif // GPODDEVICE_H