Hi Jean,


 From:   Nuno Santos <nunosan...@imaginando.pt> 
 To:   Jean-Michaël Celerier <jeanmichael.celer...@gmail.com> 
 Cc:   Qt Project MailingList <interest@qt-project.org> 
 Sent:   7/25/2018 12:59 PM 
 Subject:   Re: [Interest] App crashing because of ImageProvider when exiting 


Jean,


This is the main context. It will not get out until app.exec() terminates.


That’s why I’m connecting to aboutToQuit signal in order to remove the provider 
from the Qml engine. 


Since the engine takes ownership you don't need to remove the image provider in 
your case, since you're not adding/removing providers dynamically during 
runtime.







I had the provider instantiated inside the controller but I was having this 
problem already, therefore my efforts in getting it fixed.



QQmlApplicationEngine *e;


int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);


    Controller controller;


    QQmlApplicationEngine engine;


    e = &engine;


    engine.rootContext()->setContextProperty("controller", &controller);
    engine.load(QUrl(QStringLiteral("qrc:/qml/main.qml")));


    ImageProvider imageProvider;
    engine.addImageProvider("pictures", &imageProvider);


    QObject::connect(&app, &QGuiApplication::aboutToQuit, [=]()
    {
        e->removeImageProvider("pictures");
    });


    return app.exec();
}


Any ideas?


Regards,


Nuno



On 25 Jul 2018, at 11:30, Jean-Michaël Celerier 
<jeanmichael.celer...@gmail.com> wrote:


Shouldn't you allocate your ImageProvider on the heap or at least ensure that 
it survives during the whole execution ? here it will be deleted by the end of 
your function










-------Jean-Michaël Celerier
http://www.jcelerier.name 

On Wed, Jul 25, 2018 at 11:24 AM, Nuno Santos <nunosan...@imaginando.pt> wrote:

Hi,


Yesterday I have used for the first time a QQuickImageProvider but I’m having 
problems because now the app crashes when I terminate it.


Tried to do the following in order to avoid the crash but it is crashing anyway:



ImageProvider imageProvider;
engine.addImageProvider("pictures", &imageProvider);


QObject::connect(&app, &QGuiApplication::aboutToQuit, [=]()
{
    e->removeImageProvider("pictures");
});


The crash is always something like this:



malloc: *** error for object 0x7ffeef34e900: pointer being freed was not 
allocated


Does anyone knows how to fix this?


Thanks!


Regards,


Nuno


_______________________________________________
 Interest mailing list
 Interest@qt-project.org
 http://lists.qt-project.org/mailman/listinfo/interest
 

 


_______________________________________________ 
Interest mailing list 
Interest@qt-project.org 
http://lists.qt-project.org/mailman/listinfo/interest 
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to