By doing so, the app crashes any time a document is loaded. It does not crash always at the same point, but it may occur at two different points:
1) In the internalRenderCallback, when it calls "doNextTask()", it crashes at line 84 of the renderengine.cpp if (m_activeTaskCount && !task->canBeRunInParallel(m_lastTask)) return; 2) In lopartsimageresponse.cpp, when deleting m_task. (No other info is visible on the debugger) void LOPartsImageResponse::cancel() { disconnect(RenderEngine::instance(), &RenderEngine::taskRenderFinished, this, &LOPartsImageResponse::slotTaskRenderFinished); if (m_task) { QMetaObject::invokeMethod(RenderEngine::instance(), "dequeueTask", Qt::QueuedConnection, Q_ARG(int, m_task->id())); delete m_task; } } With the current code, I really think we should give the ownership of the task to the RenderEngine. As we discussed earlier, the code I wrote is not so good because the ImageResponse gets the ownership and then it gives that ownership away in a asymmetrical/strange/ugly way. Supposed that we should try to make RenderEngine work properly with different threads, could we revert to the code I wrote earlier (RenderEngine takes ownership of the tasks, and we connect to it using a BlockingQueueConnection)? It used to work with no issue when we tried it. -- https://code.launchpad.net/~verzegnassi-stefano/ubuntu-docviewer-app/lok-qml-async-imageprovider/+merge/282878 Your team Ubuntu Document Viewer Developers is requested to review the proposed merge of lp:~verzegnassi-stefano/ubuntu-docviewer-app/lok-qml-async-imageprovider into lp:ubuntu-docviewer-app. -- Mailing list: https://launchpad.net/~ubuntu-touch-coreapps-reviewers Post to : ubuntu-touch-coreapps-reviewers@lists.launchpad.net Unsubscribe : https://launchpad.net/~ubuntu-touch-coreapps-reviewers More help : https://help.launchpad.net/ListHelp