aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-10-16 14:53:48 +0200
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-11-07 12:29:03 +0100
commit95b5ac1abc80be0ea8df7137637d510404bfef9f (patch)
treed3fa2ca4d43b7fc4f5f5b3e20c53cb2541517d21 /sources/pyside6
parent65aea076261d0651c515999040460008d6183af4 (diff)
Fix QQuick3DInstancing::getInstanceBuffer()
Modify virtual QByteArray QQuick3DInstancing::getInstanceBuffer(int*) to return a tuple of <QByteArray, int>. Pick-to: 6.8 Change-Id: I3a6c249e2e72c4a490aa34c6caa847528b1ceb62 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'sources/pyside6')
-rw-r--r--sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml10
-rw-r--r--sources/pyside6/PySide6/glue/qtquick3d.cpp21
2 files changed, 31 insertions, 0 deletions
diff --git a/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml b/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml
index fe8f4e700..b981de4bc 100644
--- a/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml
+++ b/sources/pyside6/PySide6/QtQuick3D/typesystem_quick3d.xml
@@ -22,6 +22,16 @@
</object-type>
<object-type name="QQuick3DInstancing">
<value-type name="InstanceTableEntry"/>
+ <add-function signature="getInstanceBufferOverride()"
+ return-type="std::pair&lt;QByteArray,int&gt;" python-override="true"/>
+ <modify-function signature="getInstanceBuffer(int*)">
+ <inject-code class="shell" position="override" file="../glue/qtquick3d.cpp"
+ snippet="qquick3dinstancing-getinstancebuffer-virtual-redirect"/>
+ <modify-argument index="return" pyi-type="Tuple[bool, str]"/>
+ <modify-argument index="1"><remove-default-expression/><remove-argument/></modify-argument>
+ <inject-code class="target" position="beginning" file="../glue/qtquick3d.cpp"
+ snippet="qquick3dinstancing-getinstancebuffer-return"/>
+ </modify-function>
</object-type>
<object-type name="QQuick3DTextureData">
<enum-type name="Format"/>
diff --git a/sources/pyside6/PySide6/glue/qtquick3d.cpp b/sources/pyside6/PySide6/glue/qtquick3d.cpp
new file mode 100644
index 000000000..0139913ad
--- /dev/null
+++ b/sources/pyside6/PySide6/glue/qtquick3d.cpp
@@ -0,0 +1,21 @@
+// Copyright (C) 2024 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+/*********************************************************************
+ * INJECT CODE
+ ********************************************************************/
+
+// @snippet qquick3dinstancing-getinstancebuffer-virtual-redirect
+std::pair<QByteArray, int> resultPair = getInstanceBufferOverride(gil, pyOverride.object());
+if (instanceCount != nullptr)
+ *instanceCount = resultPair.second;
+return resultPair.first;
+// @snippet qquick3dinstancing-getinstancebuffer-virtual-redirect
+
+// @snippet qquick3dinstancing-getinstancebuffer-return
+int count{};
+%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&count);
+%PYARG_0 = PyTuple_New(2);
+PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
+PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](count));
+// @snippet qquick3dinstancing-getinstancebuffer-return