From 2c9952b8b71ea020d2c785030957a9164231e290 Mon Sep 17 00:00:00 2001 From: emeric Date: Sat, 28 Mar 2020 20:09:57 +0100 Subject: [PATCH] Switching from ImageMagick++ to GraphicsMagick++ to ease compatibility with wt4. ref #42 --- CMakeLists.txt | 2 +- src/libs/cover/CMakeLists.txt | 6 +++--- src/libs/cover/impl/CoverArtGrabber.cpp | 14 ++++++-------- src/libs/cover/impl/CoverArtGrabber.hpp | 4 +--- src/libs/cover/impl/Image.cpp | 6 ------ src/libs/cover/impl/Image.hpp | 1 - 6 files changed, 11 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 516595ee..804bf495 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED True) include(CTest) find_package(PkgConfig) -pkg_check_modules(IMAGEMAGICKXX REQUIRED ImageMagick++) +pkg_check_modules(GRAPHICSMAGICKXX REQUIRED GraphicsMagick++) add_subdirectory(src) diff --git a/src/libs/cover/CMakeLists.txt b/src/libs/cover/CMakeLists.txt index 62eb5d43..cffb40b5 100644 --- a/src/libs/cover/CMakeLists.txt +++ b/src/libs/cover/CMakeLists.txt @@ -10,17 +10,17 @@ target_include_directories(lmscover INTERFACE target_include_directories(lmscover PRIVATE include - ${IMAGEMAGICKXX_INCLUDE_DIRS} + ${GRAPHICSMAGICKXX_INCLUDE_DIRS} ) target_compile_options(lmscover PRIVATE - ${IMAGEMAGICKXX_CFLAGS_OTHER} + ${GRAPHICSMAGICKXX_CFLAGS_OTHER} ) target_link_libraries(lmscover PRIVATE lmsav lmsdatabase - ${IMAGEMAGICKXX_LIBRARIES} + ${GRAPHICSMAGICKXX_LIBRARIES} ) install(TARGETS lmscover DESTINATION lib) diff --git a/src/libs/cover/impl/CoverArtGrabber.cpp b/src/libs/cover/impl/CoverArtGrabber.cpp index 110b80d1..38781cbc 100644 --- a/src/libs/cover/impl/CoverArtGrabber.cpp +++ b/src/libs/cover/impl/CoverArtGrabber.cpp @@ -49,15 +49,13 @@ Grabber::Grabber(const std::filesystem::path& execPath) init(execPath); } -Grabber::~Grabber() -{ - deinit(); -} - void Grabber::setDefaultCover(const std::filesystem::path& p) { - if (!_defaultCover.load(p)) + std::unique_lock lock {_mutex}; + + _defaultCover = std::make_unique(); + if (!_defaultCover->load(p)) throw LmsException("Cannot read default cover file '" + p.string() + "'"); } @@ -65,12 +63,12 @@ Image Grabber::getDefaultCover(std::size_t size) { LMS_LOG(COVER, DEBUG) << "Getting a default cover using size = " << size; - std::unique_lock lock(_mutex); + std::unique_lock lock {_mutex}; auto it = _defaultCovers.find(size); if (it == _defaultCovers.end()) { - Image cover = _defaultCover; + Image cover = *_defaultCover; LMS_LOG(COVER, DEBUG) << "default cover size = " << cover.getSize().width << " x " << cover.getSize().height; diff --git a/src/libs/cover/impl/CoverArtGrabber.hpp b/src/libs/cover/impl/CoverArtGrabber.hpp index bc921355..df932315 100644 --- a/src/libs/cover/impl/CoverArtGrabber.hpp +++ b/src/libs/cover/impl/CoverArtGrabber.hpp @@ -41,7 +41,6 @@ namespace CoverArt { public: Grabber(const std::filesystem::path& execPath); - ~Grabber(); Grabber(const Grabber&) = delete; Grabber& operator=(const Grabber&) = delete; @@ -63,9 +62,8 @@ namespace CoverArt std::optional getFromDirectory(const std::filesystem::path& path) const; Image getDefaultCover(std::size_t size); - Image _defaultCover; - std::mutex _mutex; + std::unique_ptr _defaultCover; std::map _defaultCovers; static inline const std::vector _fileExtensions {".jpg", ".jpeg", ".png", ".bmp"}; // TODO parametrize diff --git a/src/libs/cover/impl/Image.cpp b/src/libs/cover/impl/Image.cpp index a39c0061..f05fcc73 100644 --- a/src/libs/cover/impl/Image.cpp +++ b/src/libs/cover/impl/Image.cpp @@ -29,12 +29,6 @@ init(const std::filesystem::path& path) Magick::InitializeMagick(path.string().c_str()); } -void -deinit() -{ - MagickCore::MagickCoreTerminus(); -} - static std::string formatToMagick(Format format) diff --git a/src/libs/cover/impl/Image.hpp b/src/libs/cover/impl/Image.hpp index 6932825f..7abcb37c 100644 --- a/src/libs/cover/impl/Image.hpp +++ b/src/libs/cover/impl/Image.hpp @@ -30,7 +30,6 @@ namespace CoverArt { void init(const std::filesystem::path& path); - void deinit(); class Image {