アプリケーションが大量のメモリを消費し始めます。最初のショットは 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 でテスト済み。