From f697cdf007d262ed554e8a20d19d3e0862a3dd9b Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Sat, 19 Apr 2008 18:46:02 +0000 Subject: [PATCH] Add a close() method for the comicbook document so: - resources can be freed when closing the Okular document for real (and not just when opening a new comicbook document or quitting) - we do not crash when doing an opening sequence like: cbz -> cbr -> cbz svn path=/trunk/KDE/kdegraphics/okular/; revision=798868 --- generators/comicbook/document.cpp | 18 +++++++++++++----- generators/comicbook/document.h | 1 + generators/comicbook/generator_comicbook.cpp | 2 ++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/generators/comicbook/document.cpp b/generators/comicbook/document.cpp index 874ee81be..6e650efb2 100644 --- a/generators/comicbook/document.cpp +++ b/generators/comicbook/document.cpp @@ -25,15 +25,11 @@ Document::Document() Document::~Document() { - delete mUnrar; - delete mZip; } bool Document::open( const QString &fileName ) { - delete mZip; - delete mUnrar; - mPageMap.clear(); + close(); /** * We have a zip archive @@ -93,6 +89,18 @@ bool Document::open( const QString &fileName ) return true; } +void Document::close() +{ + if ( !( mZip || mUnrar ) ) + return; + + delete mZip; + mZip = 0; + delete mUnrar; + mUnrar = 0; + mPageMap.clear(); +} + void Document::extractImageFiles( const QStringList &list ) { QStringList files( list ); diff --git a/generators/comicbook/document.h b/generators/comicbook/document.h index 4e806e5cc..6b665a613 100644 --- a/generators/comicbook/document.h +++ b/generators/comicbook/document.h @@ -26,6 +26,7 @@ class Document ~Document(); bool open( const QString &fileName ); + void close(); int pages() const; QStringList pageTitles() const; diff --git a/generators/comicbook/generator_comicbook.cpp b/generators/comicbook/generator_comicbook.cpp index 78485a554..d12a11519 100644 --- a/generators/comicbook/generator_comicbook.cpp +++ b/generators/comicbook/generator_comicbook.cpp @@ -76,6 +76,8 @@ bool ComicBookGenerator::loadDocument( const QString & fileName, QVector