diff --git a/YACReaderLibrary/initial_comic_info_extractor.cpp b/YACReaderLibrary/initial_comic_info_extractor.cpp index 2d889f4c..d25d84c4 100644 --- a/YACReaderLibrary/initial_comic_info_extractor.cpp +++ b/YACReaderLibrary/initial_comic_info_extractor.cpp @@ -27,38 +27,27 @@ void InitialComicInfoExtractor::extract() #ifndef NO_PDF if (fi.suffix().compare("pdf", Qt::CaseInsensitive) == 0) { #if defined Q_OS_MAC && defined USE_PDFKIT - MacOSXPDFComic *pdfComic = new MacOSXPDFComic(); + auto pdfComic = std::make_unique(); if (!pdfComic->openComic(_fileSource)) { - delete pdfComic; - // QImage p; - // p.load(":/images/notCover.png"); - // p.save(_target); return; } #elif defined USE_PDFIUM - auto pdfComic = new PdfiumComic(); + auto pdfComic = std::make_unique(); if (!pdfComic->openComic(_fileSource)) { - delete pdfComic; return; } #else - Poppler::Document *pdfComic = Poppler::Document::load(_fileSource); + auto _pdfComic = Poppler::Document::load(_fileSource); + auto pdfComic = std::unique_ptr(_pdfComic); #endif - if (!pdfComic) { QLOG_WARN() << "Extracting cover: unable to open PDF file " << _fileSource; - // delete pdfComic; //TODO check if the delete is needed - pdfComic = 0; - // QImage p; - // p.load(":/images/notCover.png"); - // p.save(_target); return; } #if !defined USE_PDFKIT && !defined USE_PDFIUM // poppler only, not mac if (pdfComic->isLocked()) { QLOG_WARN() << "Extracting cover: unable to open PDF file " << _fileSource; - delete pdfComic; return; } #endif @@ -75,11 +64,8 @@ void InitialComicInfoExtractor::extract() saveCover(_target, p); } else if (_target != "") { QLOG_WARN() << "Extracting cover: requested cover index greater than numPages " << _fileSource; - // QImage p; - // p.load(":/images/notCover.png"); - // p.save(_target); + } - delete pdfComic; } return; } diff --git a/common/comic.cpp b/common/comic.cpp index 69882fae..26b3949e 100644 --- a/common/comic.cpp +++ b/common/comic.cpp @@ -796,24 +796,22 @@ bool PDFComic::load(const QString &path, const ComicDB &comic) void PDFComic::process() { #if defined Q_OS_MAC && defined USE_PDFKIT - pdfComic = new MacOSXPDFComic(); + pdfComic = std::make_unique(); if (!pdfComic->openComic(_path)) { - delete pdfComic; emit errorOpening(); return; } #elif defined USE_PDFIUM - pdfComic = new PdfiumComic(); + pdfComic = std::make_unique(); if (!pdfComic->openComic(_path)) { - delete pdfComic; emit errorOpening(); return; } #else - pdfComic = Poppler::Document::load(_path); + auto _pdfComic = Poppler::Document::load(_path); + pdfComic = std::unique_ptr(_pdfComic); + if (!pdfComic) { - // delete pdfComic; - // pdfComic = 0; moveToThread(QCoreApplication::instance()->thread()); emit errorOpening(); return; @@ -824,7 +822,6 @@ void PDFComic::process() return; } - // pdfComic->setRenderHint(Poppler::Document::Antialiasing, true); pdfComic->setRenderHint(Poppler::Document::TextAntialiasing, true); #endif @@ -853,7 +850,6 @@ void PDFComic::process() int buffered_index = _index; for (int i = buffered_index; i < nPages; i++) { if (_invalidated) { - delete pdfComic; moveToThread(QCoreApplication::instance()->thread()); return; } @@ -862,14 +858,12 @@ void PDFComic::process() } for (int i = 0; i < buffered_index; i++) { if (_invalidated) { - delete pdfComic; moveToThread(QCoreApplication::instance()->thread()); return; } renderPage(i); } - delete pdfComic; moveToThread(QCoreApplication::instance()->thread()); emit imagesLoaded(); } @@ -883,10 +877,9 @@ void PDFComic::renderPage(int page) QImage img = pdfComic->getPage(page); if (!img.isNull()) { #else - Poppler::Page *pdfpage = pdfComic->page(page); + std::unique_ptr pdfpage (pdfComic->page(page)); if (pdfpage) { QImage img = pdfpage->renderToImage(150, 150); - delete pdfpage; #endif QByteArray ba; QBuffer buf(&ba); diff --git a/common/comic.h b/common/comic.h index a64da6f5..9be08d43 100644 --- a/common/comic.h +++ b/common/comic.h @@ -165,11 +165,11 @@ class PDFComic : public Comic private: // pdf #if defined Q_OS_MAC && defined USE_PDFKIT - MacOSXPDFComic *pdfComic; + std::unique_ptr pdfComic; #elif defined USE_PDFIUM - PdfiumComic *pdfComic; + std::unique_ptr pdfComic; #else - Poppler::Document *pdfComic; + std::unique_ptr pdfComic; #endif void renderPage(int page); // void run();