mirror of
https://github.com/YACReader/yacreader
synced 2025-05-25 18:00:46 -04:00
YACReader: Fix crash when exiting while processing a comic
When quitting YACReader while processing a comic, the comic thread needs to be properly terminated to avoid segfaults and other possible problems.
This commit is contained in:
parent
21b8b70657
commit
0414104067
@ -4,6 +4,8 @@ Version counting is based on semantic versioning (Major.Feature.Patch)
|
||||
|
||||
## WIP
|
||||
|
||||
### YACReader
|
||||
*Fix segfault (or worse) when exiting YACReader while processing a comic
|
||||
### YACReaderLibrary
|
||||
* Fixed drag&drop in the comics grid view.
|
||||
* Detect back/forward mouse buttons to move back and forward through the browsing history.
|
||||
|
@ -382,20 +382,23 @@ Render::Render()
|
||||
|
||||
Render::~Render()
|
||||
{
|
||||
if (comic != nullptr) {
|
||||
comic->moveToThread(QApplication::instance()->thread());
|
||||
comic->deleteLater();
|
||||
for (auto *pr : pageRenders) {
|
||||
if (pr != nullptr && pr->wait()) {
|
||||
delete pr;
|
||||
}
|
||||
}
|
||||
|
||||
foreach (PageRender *pr, pageRenders)
|
||||
if (pr != nullptr) {
|
||||
if (pr->wait())
|
||||
delete pr;
|
||||
}
|
||||
|
||||
// TODO move to share_ptr
|
||||
foreach (ImageFilter *filter, filters)
|
||||
for (auto *filter : filters) {
|
||||
delete filter;
|
||||
}
|
||||
|
||||
if (comic != nullptr) {
|
||||
comic->invalidate();
|
||||
comic->deleteLater();
|
||||
comic->thread()->quit();
|
||||
comic->thread()->wait();
|
||||
}
|
||||
}
|
||||
// Este método se encarga de forzar el renderizado de las páginas.
|
||||
// Actualiza el buffer según es necesario.
|
||||
|
@ -890,8 +890,10 @@ void PDFComic::renderPage(int page)
|
||||
#endif
|
||||
QByteArray ba;
|
||||
QBuffer buf(&ba);
|
||||
buf.open(QIODevice::WriteOnly);
|
||||
img.save(&buf, "jpg", 96);
|
||||
_pages[page] = ba;
|
||||
buf.close();
|
||||
emit imageLoaded(page);
|
||||
emit imageLoaded(page, _pages[page]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user