[Interest] [Qt3D] Ununderstable message when closing a scene

Xavier Bigand flamaros.xavier at gmail.com
Fri Jun 17 12:11:56 CEST 2016


I finally found a work around to fix my crash when loading models
after few unload.

I simply release myself all children of the delete entity with the
following recursive method :


    void    releaseModel(Qt3DCore::QNode& model)

    {

        QEntity*    entity = dynamic_cast<QEntity*>(&model);


        if (entity)

        {

            QComponentVector    components = entity->components();


            foreach (QComponent* component, components)

            {

                entity->removeComponent(component);

                delete component;

            }

        }


        QNodeVector nodes = model.childNodes();


        foreach (QNode* node, nodes)

        {

            releaseModel(*node);

            delete node;

        }

    }



I don't know why I haven't the same behavior when letting Qt doing it.



Need I fill a bug?



It seems that Qt3D have a lot of memory leaks, after changing a few
projects our application use more than 1Go when with our actual 3D engine
it's always lower than 200Mo.


2016-06-16 23:03 GMT+02:00 Xavier Bigand <flamaros.xavier at gmail.com>:

> Thank for the report.
>
> I was not sure if it wasn't me doing something wrong.
>
> But it might be the case, because the assert seems to come from a bad
> ressources management.
> When I switch projects I simply delete entities that attached to the root
> one, but doing this leads to the assert at a certain time and memory leaks
> apparently.
>
> My scenes are composed of objects that I load from a custom file format,
> it's for an architecture software.
>
> I can load 2 projects in a row, and on the third I get the assert.
>
> It seems that I can debug when using Visual instead of QtCreator. And it
> surprise me because the release of ressources seems to be done later than
> when I call the delete of entities.
>
>
> 2016-06-16 21:14 GMT+02:00 Harald Vistnes <harald.vistnes at gmail.com>:
>
>> I get the same QMetaProperty::read warning. I just filed a Jira for it.
>> https://bugreports.qt.io/browse/QTBUG-54159?filter=17174
>>
>> Annoying and it came recently, but not critical as you can continue
>> running the debugger.
>>
>> Harald
>>
>> 2016-06-16 17:53 GMT+02:00 Xavier Bigand <flamaros.xavier at gmail.com>:
>>
>>> Sometimes when it doesn't crash on the first scene switch I can get this
>>> assert :
>>> ASSERT: "m_entries[index].m_counter == handle.counter()" in file
>>> c:/Users/qt/work/qt/qt3d/src/core/resources/qhandlemanager_p.h, line 170
>>>
>>> Sadly it seems that I am not able to debug it with source code.
>>>
>>> 2016-06-16 17:35 GMT+02:00 Xavier Bigand <flamaros.xavier at gmail.com>:
>>>
>>>> I am getting the following message when I unload a scene. I am simply
>>>> deleting the entities I don't have to display anymore.
>>>>
>>>> QMetaProperty::read: Unable to handle unregistered datatype
>>>> 'Qt3DRender::QBuffer*' for property 'Qt3DRender::QAttribute::buffer'
>>>>
>>>> What is the proper way to unload meshes in c++? Need I also delete all
>>>> attached components (QGeometryRenderer, QBuffer, ...)?
>>>>
>>>> --
>>>> Xavier
>>>>
>>>
>>>
>>>
>>> --
>>> Xavier
>>>
>>> _______________________________________________
>>> Interest mailing list
>>> Interest at qt-project.org
>>> http://lists.qt-project.org/mailman/listinfo/interest
>>>
>>>
>>
>
>
> --
> Xavier
>



-- 
Xavier
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160617/e4493fdd/attachment.html>


More information about the Interest mailing list