QML Loader内存泄漏?

时间:2012-08-14 23:58:05

标签: qt4 qml qt-mobility

我的应用程序开始消耗大量内存。第一个镜头是MNG动画缓存,但它接缝只是不共享。 所以我在构造函数/析构函数中创建了一个带调试打印的TestItem,当通过视频停止信号更改源代码时,我看到Loader没有工作属性:

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();
        }
    }
}

所以当我点击4次时,我得到这样的控制台输出:

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

当我关闭我的应用程序时,所有剩余的对象都将被删除:

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

为什么onStopped信号可能产生这样的行为? 有没有解决这个问题?

使用libqt4-declarative(版本:4:4.8.1-0ubuntu4.2)和libdeclarative-multimedia(版本:1.2.0-1ubuntu2)在Ubuntu 12.04上测试。

0 个答案:

没有答案