Wait for all threads to finish rendering before deleting the filters, otherwise any PageRender could try to use a filter after deleting it.

This is clear example of the risks of sharing raw pointers, the code should be using share_ptr.
This commit is contained in:
Luis Ángel San Martín 2018-01-03 16:44:10 +01:00
parent da8856d271
commit 936dd63d4c

View File

@ -421,15 +421,16 @@ Render::~Render()
comic->deleteLater();
}
foreach(ImageFilter * filter, filters)
delete filter;
foreach(PageRender * pr,pageRenders)
if(pr !=0)
{
if(pr->wait())
delete pr;
}
//TODO move to share_ptr
foreach(ImageFilter * filter, filters)
delete filter;
}
//Este método se encarga de forzar el renderizado de las páginas.
//Actualiza el buffer según es necesario.