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

Reply via email to