4

My application starts to consume large amount of memmory. First shot was MNG animation cache, but it seams that they are just not shared. So I created a TestItem with debug print in constructor/destructor, and I saw that Loader not working property when its source is changed via Video stop signal:

import QtQuick 1.1
import QtMultimediaKit 1.1

Rectangle {
    id:root
    width: 800
    height: 480

    Video {
        id: video1
        anchors.fill: parent
        source: "test.mp4" 
        onStopped: {
            loader1.source= "Test2.qml";
        }
    }
    Loader {
        id:loader1
        onSourceChanged: {
            console.debug("source changed to "+source)
        }
    }
    MouseArea {
        anchors.fill: parent
        onPressed: {
            loader1.source= "Test1.qml";
            video1.play();
        }
    }
}

So when I click 4 times I get console output like this:

TestItem(0x1b4fc00) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
TestItem(0x2047ba0) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2046720) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2047ba0) 
TestItem(0x2050560) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x204fad0) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2050560) 
TestItem(0x2051e40) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml
TestItem(0x2051330) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test1.qml
~ TestItem(0x2051e40) 
TestItem(0x2052e90) 
source changed to file:///opt/Test/qml/TestLoaderBug/Test2.qml

And when I close my application, all remaing object are deleted:

~ TestItem(0x1b4fc00) 
~ TestItem(0x2046720) 
~ TestItem(0x204fad0) 
~ TestItem(0x2051330) 
~ TestItem(0x2052e90) 

Why the onStopped signal may produce such behavior? Is there any fix for this?

Tested on Ubuntu 12.04 with libqt4-declarative(Version: 4:4.8.1-0ubuntu4.2) and libdeclarative-multimedia(Version: 1.2.0-1ubuntu2).

Arpegius
  • 5,817
  • 38
  • 53
  • 2
    Those items are deleted when garbage collection kicks in. Try explicitly calling gc() onSourceChanged and see if it makes a difference – Sergio Martins Nov 07 '14 at 19:18
  • @SergioMartins thx for answer but I need it two years ago ;-) anyway I must check for this behavior in current Qt5.3. – Arpegius Nov 07 '14 at 19:24

0 Answers0