From 43a6cc75886c662e63db440dd191cefa1fe956f3 Mon Sep 17 00:00:00 2001 From: Matthew Vogt Date: Fri, 4 May 2012 08:32:45 +1000 Subject: Add QQmlEngine::trimComponentCache() Allow unused data in the engine's component cache to be safely discarded so that the memory can be freed for other purposes. Unloading of scripts that are no longer required after trimming unused components is not yet supported. Task-number: QTBUG-25653 Change-Id: I37bc9d5592eeb5edceeb34d010a555dcffd11cea Reviewed-by: Michael Brasser --- .../qml/qqmlengine/data/testScriptComponent.qml | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tests/auto/qml/qqmlengine/data/testScriptComponent.qml (limited to 'tests/auto/qml/qqmlengine/data/testScriptComponent.qml') diff --git a/tests/auto/qml/qqmlengine/data/testScriptComponent.qml b/tests/auto/qml/qqmlengine/data/testScriptComponent.qml new file mode 100644 index 0000000000..b33eb48461 --- /dev/null +++ b/tests/auto/qml/qqmlengine/data/testScriptComponent.qml @@ -0,0 +1,43 @@ +import QtQuick 2.0 + +Item { + property bool success: false + + function reportError(s) { console.warn(s) } + + Component.onCompleted: { + componentCache.trim() + if (!componentCache.isTypeLoaded('testScriptComponent.qml')) return reportError('Test component not loaded') + if (componentCache.isTypeLoaded('ScriptComponent.qml')) return reportError('Script component already loaded') + if (componentCache.isTypeLoaded('VMEExtendVMEComponent.qml')) return reportError('Extend component already loaded') + if (componentCache.isTypeLoaded('VMEComponent.qml')) return reportError('VME component already loaded') + if (componentCache.isScriptLoaded('script.js')) return reportError('Script file already loaded') + + var comp = Qt.createComponent('ScriptComponent.qml') + componentCache.trim() + if (!componentCache.isTypeLoaded('testScriptComponent.qml')) return reportError('Test component not loaded 2') + if (!componentCache.isTypeLoaded('ScriptComponent.qml')) return reportError('Script component not loaded') + if (!componentCache.isTypeLoaded('VMEExtendVMEComponent.qml')) return reportError('Extend component not loaded') + if (!componentCache.isTypeLoaded('VMEComponent.qml')) return reportError('VME component not loaded') + if (!componentCache.isScriptLoaded('script.js')) return reportError('Script file not loaded') + + var obj = comp.createObject() + if (!obj) return reportError('Invalid object') + if (obj.foo != 'bar') return reportError('Invalid object 2') + if (obj.bar != 'baz') return reportError('Invalid object 3') + if (obj.getSomething() != 'https://example.org/') return reportError('Invalid object 4') + + obj.destroy() + comp.destroy() + componentCache.trim() + if (!componentCache.isTypeLoaded('testScriptComponent.qml')) return reportError('Test component not loaded 3') + if (componentCache.isTypeLoaded('ScriptComponent.qml')) return reportError('Script component not unloaded') + if (componentCache.isTypeLoaded('VMEExtendVMEComponent.qml')) return reportError('Extend component not unloaded') + if (componentCache.isTypeLoaded('VMEComponent.qml')) return reportError('VME component not unloaded') + + // Script unloading is not currently implemented + //if (componentCache.isScriptLoaded('script.js')) return reportError('Script file already loaded') + + success = true + } +} -- cgit v1.2.3