Use std::shared_ptrfor AlbumCoverLoaderResult

Reduces memory fragmentation with Qt 6
This commit is contained in:
Jonas Kvinge
2023-04-06 23:18:10 +02:00
parent 962536bc83
commit b660287779
38 changed files with 363 additions and 294 deletions

View File

@@ -22,12 +22,15 @@
#include "config.h"
#include <memory>
#include <QImage>
#include <QUrl>
#include "albumcoverimageresult.h"
struct AlbumCoverLoaderResult {
class AlbumCoverLoaderResult {
public:
enum class Type {
None,
@@ -40,7 +43,7 @@ struct AlbumCoverLoaderResult {
explicit AlbumCoverLoaderResult(const bool _success = false,
const Type _type = Type::None,
const AlbumCoverImageResult &_album_cover = AlbumCoverImageResult(),
AlbumCoverImageResultPtr _album_cover = AlbumCoverImageResultPtr(),
const QImage &_image_scaled = QImage(),
const QImage &_image_thumbnail = QImage(),
const bool _updated = false) :
@@ -49,11 +52,17 @@ struct AlbumCoverLoaderResult {
album_cover(_album_cover),
image_scaled(_image_scaled),
image_thumbnail(_image_thumbnail),
updated(_updated) {}
updated(_updated) {
if (!_album_cover) {
_album_cover = std::make_shared<AlbumCoverImageResult>();
}
}
bool success;
Type type;
AlbumCoverImageResult album_cover;
AlbumCoverImageResultPtr album_cover;
QImage image_scaled;
QImage image_thumbnail;
bool updated;
@@ -62,4 +71,9 @@ struct AlbumCoverLoaderResult {
};
using AlbumCoverLoaderResultPtr = std::shared_ptr<AlbumCoverLoaderResult>;
Q_DECLARE_METATYPE(AlbumCoverLoaderResult)
Q_DECLARE_METATYPE(AlbumCoverLoaderResultPtr)
#endif // ALBUMCOVERLOADERRESULT_H