diff options
Diffstat (limited to 'sources/pyside2/PySide2')
10 files changed, 279 insertions, 72 deletions
diff --git a/sources/pyside2/PySide2/QtDataVisualization/typesystem_datavisualization.xml b/sources/pyside2/PySide2/QtDataVisualization/typesystem_datavisualization.xml index f10aeea3e..5dc87a013 100644 --- a/sources/pyside2/PySide2/QtDataVisualization/typesystem_datavisualization.xml +++ b/sources/pyside2/PySide2/QtDataVisualization/typesystem_datavisualization.xml @@ -119,56 +119,43 @@ <parent index="this" action="add"/> </modify-argument> </modify-function> - <modify-function signature="addRow(QVector<QtDataVisualization::QBarDataItem>*)"> - <modify-argument index="1"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="addRow(QVector<QtDataVisualization::QBarDataItem>*, const QString&)"> - <modify-argument index="1"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="addRows(const QtDataVisualization::QBarDataArray&)"> - <modify-argument index="1"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="addRows(const QtDataVisualization::QBarDataArray&, const QStringList&)"> - <modify-argument index="1"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="insertRow(int, QVector<QtDataVisualization::QBarDataItem>*)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="insertRow(int, QVector<QtDataVisualization::QBarDataItem>*, const QString&)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="insertRows(int, const QtDataVisualization::QBarDataArray&)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="insertRows(int, const QtDataVisualization::QBarDataArray&, const QStringList&)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="setRow(int, QVector<QtDataVisualization::QBarDataItem>*)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="setRow(int, QVector<QtDataVisualization::QBarDataItem>*, const QString&)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> + + <!-- PYSIDE-1438: Replace all add/set/insertRow() taking a 'QVector*' by overloads + taking 'const QVector &' since an allocated list needs to be passed. --> + <modify-function signature="addRow(QVector<QtDataVisualization::QBarDataItem>*)" remove="all"/> + <add-function signature="addRow(const QVector<QtDataVisualization::QBarDataItem>&)" return-type="int"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-addrow"/> + </add-function> + <modify-function signature="addRow(QVector<QtDataVisualization::QBarDataItem>*,const QString&)" remove="all"/> + <add-function signature="addRow(const QVector<QtDataVisualization::QBarDataItem>&,const QString&)" + return-type="int"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-addrow-string"/> + </add-function> + + <modify-function signature="insertRow(int,QVector<QtDataVisualization::QBarDataItem>*)" remove="all"/> + <add-function signature="insertRow(int,const QVector<QtDataVisualization::QBarDataItem>&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-insertrow"/> + </add-function> + <modify-function signature="insertRow(int,QVector<QtDataVisualization::QBarDataItem>*,const QString&)" remove="all"/> + <add-function signature="insertRow(int,const QVector<QtDataVisualization::QBarDataItem>&, const QString&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-insertrow-string"/> + </add-function> + + <modify-function signature="setRow(int,QVector<QtDataVisualization::QBarDataItem>*)" remove="all"/> + <add-function signature="setRow(int,const QVector<QtDataVisualization::QBarDataItem>&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-setrow"/> + </add-function> + <modify-function signature="setRow(int,QVector<QtDataVisualization::QBarDataItem>*,const QString&)" remove="all"/> + <add-function signature="setRow(int,const QVector<QtDataVisualization::QBarDataItem>&,const QString&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-setrow-string"/> + </add-function> + <modify-function signature="setRows(int, const QtDataVisualization::QBarDataArray&)"> <modify-argument index="2"> <parent index="this" action="add"/> @@ -182,7 +169,13 @@ </object-type> <object-type name="QCustom3DItem"/> <object-type name="QCustom3DLabel"/> - <object-type name="QCustom3DVolume"/> + <object-type name="QCustom3DVolume"> + <modify-function signature="setTextureData(QVector<uchar>*)" remove="all"/> + <add-function signature="setTextureData(const QVector<uchar>&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="qcustom3dvolume-settexturedata"/> + </add-function> + </object-type> <object-type name="QHeightMapSurfaceDataProxy"/> <object-type name="QItemModelBarDataProxy"> <enum-type name="MultiMatchBehavior"/> @@ -251,21 +244,27 @@ </object-type> <value-type name="QSurfaceDataItem"/> <object-type name="QSurfaceDataProxy"> - <modify-function signature="addRow(QVector<QtDataVisualization::QSurfaceDataItem>*)"> - <modify-argument index="1"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="insertRow(int, QVector<QtDataVisualization::QSurfaceDataItem>*)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> - <modify-function signature="setRow(int, QVector<QtDataVisualization::QSurfaceDataItem>*)"> - <modify-argument index="2"> - <parent index="this" action="add"/> - </modify-argument> - </modify-function> + + <!-- PYSIDE-1438: Replace all add/set/insertRow() taking a 'QVector*' by overloads + taking 'const QVector &' since an allocated list needs to be passed. --> + <modify-function signature="addRow(QVector<QtDataVisualization::QSurfaceDataItem>*)" remove="all"/> + <add-function signature="addRow(const QVector<QtDataVisualization::QSurfaceDataItem>&)" return-type="int"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-addrow"/> + </add-function> + + <modify-function signature="insertRow(int,QVector<QtDataVisualization::QSurfaceDataItem>*)" remove="all"/> + <add-function signature="insertRow(int,const QVector<QtDataVisualization::QSurfaceDataItem>&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-insertrow"/> + </add-function> + + <modify-function signature="setRow(int,QVector<QtDataVisualization::QSurfaceDataItem>*)" remove="all"/> + <add-function signature="setRow(int,const QVector<QtDataVisualization::QSurfaceDataItem>&)"> + <inject-code class="target" position="beginning" file="../glue/qtdatavisualization.cpp" + snippet="dataproxy-setrow"/> + </add-function> + <modify-function signature="resetArray(QtDataVisualization::QSurfaceDataArray*)"> <modify-argument index="1"> <parent index="this" action="add"/> diff --git a/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml b/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml index aa8391f8f..b0c61fe64 100644 --- a/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml +++ b/sources/pyside2/PySide2/QtGui/typesystem_gui_common.xml @@ -1871,18 +1871,23 @@ <modify-function signature="drawRects(const QRect*,int)" remove="all"/> <modify-function signature="drawRects(const QRectF*,int)" remove="all"/> <!-- ### --> + <!-- PYSIDE-1540: Preferably use the QPolygon overloads first to avoid + a costly sequence type check on QPolygon. --> <modify-function signature="drawPoints(const QPoint*,int)" remove="all"/> - <add-function signature="drawPoints(QVector<QPoint>)"> + <add-function signature="drawPoints(QVector<QPoint>)" overload-number="2"> <inject-code> <insert-template name="qpainter_drawlist"/> </inject-code> </add-function> <modify-function signature="drawPoints(const QPointF*,int)" remove="all"/> - <add-function signature="drawPoints(QVector<QPointF>)"> + <add-function signature="drawPoints(QVector<QPointF>)" overload-number="3"> <inject-code> <insert-template name="qpainter_drawlist"/> </inject-code> </add-function> + <modify-function signature="drawPoints(const QPolygon&)" overload-number="0"/> + <modify-function signature="drawPoints(const QPolygonF&)" overload-number="1"/> + <modify-function signature="drawPolygon(const QPoint*,int,Qt::FillRule)" remove="all"/> <add-function signature="drawPolygon(QVector<QPoint>,Qt::FillRule)"> <inject-code file="../glue/qtgui.cpp" snippet="qpainter-drawpolygon"/> @@ -2601,6 +2606,10 @@ </object-type> <object-type name="QOpenGLContext"> <enum-type name="OpenGLModuleType"/> + <modify-function signature="versionFunctions(const QOpenGLVersionProfile&) const"> + <inject-code class="target" position="beginning" file="../glue/qtgui.cpp" + snippet="qopenglcontext-versionfunctions"/> + </modify-function> </object-type> <object-type name="QOpenGLContextGroup" since="5.0"/> <object-type name="QOpenGLDebugLogger" since="5.1"> @@ -2835,7 +2844,8 @@ <modify-argument index="return"> <replace-type modified-type="QString"/> </modify-argument> - <inject-code class="target" position="beginning" file="../glue/qtcore.cpp" snippet="qstring-return"/> + <inject-code class="target" position="end" file="../glue/qtgui.cpp" + snippet="glgetstring-return"/> </modify-function> </object-type> <object-type name="QOpenGLFunctions" since="5.0"> diff --git a/sources/pyside2/PySide2/QtOpenGLFunctions/CMakeLists.txt b/sources/pyside2/PySide2/QtOpenGLFunctions/CMakeLists.txt index 383afb68f..62ed669cc 100644 --- a/sources/pyside2/PySide2/QtOpenGLFunctions/CMakeLists.txt +++ b/sources/pyside2/PySide2/QtOpenGLFunctions/CMakeLists.txt @@ -42,7 +42,8 @@ else() ${QtOpenGLFunctions_GEN_DIR}/qopenglfunctions_4_4_compatibility_wrapper.cpp ${QtOpenGLFunctions_GEN_DIR}/qopenglfunctions_4_4_core_wrapper.cpp ${QtOpenGLFunctions_GEN_DIR}/qopenglfunctions_4_5_compatibility_wrapper.cpp - ${QtOpenGLFunctions_GEN_DIR}/qopenglfunctions_4_5_core_wrapper.cpp) + ${QtOpenGLFunctions_GEN_DIR}/qopenglfunctions_4_5_core_wrapper.cpp + ${QtOpenGLFunctions_GEN_DIR}/qopenglversionfunctionsfactory_wrapper.cpp) message(STATUS "Qt${QT_MAJOR_VERSION}OpenGLFunctions: Adding Desktop OpenGL classes") endif() @@ -71,3 +72,6 @@ create_pyside_module(NAME QtOpenGLFunctions SOURCES QtOpenGLFunctions_SRC TYPESYSTEM_NAME ${QtOpenGLFunctions_BINARY_DIR}/typesystem_openglfunctions.xml DROPPED_ENTRIES QtOpenGLFunctions_DROPPED_ENTRIES) + +install(FILES ${pyside2_SOURCE_DIR}/qopenglversionfunctionsfactory.h + DESTINATION include/PySide2/QtOpenGLFunctions) diff --git a/sources/pyside2/PySide2/QtOpenGLFunctions/QtOpenGLFunctions_global.post.h.in b/sources/pyside2/PySide2/QtOpenGLFunctions/QtOpenGLFunctions_global.post.h.in index 6c8c77087..e43bc2b81 100644 --- a/sources/pyside2/PySide2/QtOpenGLFunctions/QtOpenGLFunctions_global.post.h.in +++ b/sources/pyside2/PySide2/QtOpenGLFunctions/QtOpenGLFunctions_global.post.h.in @@ -59,3 +59,5 @@ #if QT_CONFIG(opengles2) # include <QtGui/qopenglfunctions_es2.h> #endif + +#include "qopenglversionfunctionsfactory.h" // PySide class diff --git a/sources/pyside2/PySide2/QtOpenGLFunctions/typesystem_openglfunctions.xml b/sources/pyside2/PySide2/QtOpenGLFunctions/typesystem_openglfunctions.xml index 1d5b08edb..edb271362 100644 --- a/sources/pyside2/PySide2/QtOpenGLFunctions/typesystem_openglfunctions.xml +++ b/sources/pyside2/PySide2/QtOpenGLFunctions/typesystem_openglfunctions.xml @@ -404,6 +404,15 @@ &openglfunctions_modifications1_0; &openglfunctions_modifications1_1; </object-type> + + <object-type name="QOpenGLVersionFunctionsFactory"> + <modify-function signature="get(const QOpenGLVersionProfile&,QOpenGLContext*)" + return-type="QAbstractOpenGLFunctions*"> + <inject-code class="target" position="beginning" file="../glue/qtopenglfunctions.cpp" + snippet="qopenglversionfunctionsfactory-get"/> + </modify-function> + </object-type> + <suppress-warning text="^There's no user provided way.*QOpenGLFunctions_\d_\d.*::glIndex.*$"/> </typesystem> diff --git a/sources/pyside2/PySide2/glue/qtdatavisualization.cpp b/sources/pyside2/PySide2/glue/qtdatavisualization.cpp index 119d79a40..ce5aa6932 100644 --- a/sources/pyside2/PySide2/glue/qtdatavisualization.cpp +++ b/sources/pyside2/PySide2/glue/qtdatavisualization.cpp @@ -40,3 +40,40 @@ // @snippet releaseownership Shiboken::Object::releaseOwnership(%PYARG_1); // @snippet releaseownership + +// @snippet qcustom3dvolume-settexturedata +using VectorType = decltype(%1); +%CPPSELF.setTextureData(new VectorType(%1)); +// @snippet qcustom3dvolume-settexturedata + +// @snippet dataproxy-addrow +using VectorType = decltype(%1); +%RETURN_TYPE %0 = %CPPSELF.addRow(new VectorType(%1)); +%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0); +// @snippet dataproxy-addrow + +// @snippet dataproxy-addrow-string +using VectorType = decltype(%1); +%RETURN_TYPE %0 = %CPPSELF.addRow(new VectorType(%1), %2); +%PYARG_0 = %CONVERTTOPYTHON[%RETURN_TYPE](%0); +// @snippet dataproxy-addrow-string + +// @snippet dataproxy-insertrow +using VectorType = decltype(%2); +%CPPSELF.insertRow(%1, new VectorType(%2)); +// @snippet dataproxy-insertrow + +// @snippet dataproxy-insertrow-string +using VectorType = decltype(%2); +%CPPSELF.insertRow(%1, new VectorType(%2), %3); +// @snippet dataproxy-insertrow-string + +// @snippet dataproxy-setrow +using VectorType = decltype(%2); +%CPPSELF.setRow(%1, new VectorType(%2)); +// @snippet dataproxy-setrow + +// @snippet dataproxy-setrow-string +using VectorType = decltype(%2); +%CPPSELF.setRow(%1, new VectorType(%2), %3); +// @snippet dataproxy-setrow-string diff --git a/sources/pyside2/PySide2/glue/qtgui.cpp b/sources/pyside2/PySide2/glue/qtgui.cpp index e802a9f59..1c74c73d2 100644 --- a/sources/pyside2/PySide2/glue/qtgui.cpp +++ b/sources/pyside2/PySide2/glue/qtgui.cpp @@ -41,6 +41,27 @@ * INJECT CODE ********************************************************************/ +// @snippet qopenglcontext-versionfunctions + +// %CPPSELF.%FUNCTION_NAME(%1, %2); Pretend to shiboken we call the function + +// Import QtOpenGLFunctions and call the factory function +// QOpenGLVersionFunctionsFactory.get() +PyObject *module = PyImport_ImportModule("PySide2.QtOpenGLFunctions"); +if (module == nullptr) + return nullptr; +PyObject *loc = PyModule_GetDict(module); +static PyObject *const factoryName = + Shiboken::String::createStaticString("QOpenGLVersionFunctionsFactory"); +auto factory = PyDict_GetItem(loc, factoryName); +if (factory == nullptr) + return nullptr; + +static PyObject *const getMethod = Shiboken::String::createStaticString("get"); +%PYARG_0 = PyObject_CallMethodObjArgs(factory, getMethod, pyArgs[0], %PYSELF, + nullptr); +// @snippet qopenglcontext-versionfunctions + // @snippet glgetshadersource GLsizei bufSize = 4096; GLsizei length = bufSize - 1; @@ -63,6 +84,10 @@ const char *sources[] = {buffer.constData()}; %CPPSELF->%FUNCTION_NAME(%1, 1, sources, nullptr); // @snippet glshadersource +// @snippet glgetstring-return +%PYARG_0 = %CONVERTTOPYTHON[const char *](%0); +// @snippet glgetstring-return + // @snippet qtransform-quadtoquad QTransform _result; if (QTransform::quadToQuad(%1, %2, _result)) { diff --git a/sources/pyside2/PySide2/glue/qtopenglfunctions.cpp b/sources/pyside2/PySide2/glue/qtopenglfunctions.cpp new file mode 100644 index 000000000..c839ae44b --- /dev/null +++ b/sources/pyside2/PySide2/glue/qtopenglfunctions.cpp @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt for Python. +** +** $QT_BEGIN_LICENSE:COMM$ +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// @snippet qopenglversionfunctionsfactory-get +QAbstractOpenGLFunctions *af = %CPPSELF.%FUNCTION_NAME(%1, %2); +if (auto *f = dynamic_cast<QOpenGLFunctions_4_5_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_5_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_5_Compatibility *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_5_Compatibility *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_4_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_4_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_4_Compatibility *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_4_Compatibility *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_3_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_3_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_2_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_2_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_1_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_1_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_0_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_0_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_4_0_Compatibility *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_4_0_Compatibility *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_3_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_3_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_3_Compatibility *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_3_Compatibility *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_2_Core *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_2_Core *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_2_Compatibility *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_2_Compatibility *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_1 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_1 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_3_0 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_3_0 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_2_1 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_2_1 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_2_0 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_2_0 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_5 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_5 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_4 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_4 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_3 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_3 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_2 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_2 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_1 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_1 *](f); +} else if (auto *f = dynamic_cast<QOpenGLFunctions_1_0 *>(af)) { + %PYARG_0 = %CONVERTTOPYTHON[QOpenGLFunctions_1_0 *](f); +} else { + QString message; + QDebug(&message) << "No OpenGL functions could be obtained for" << %1; + PyErr_SetString(PyExc_RuntimeError, message.toUtf8().constData()); + %PYARG_0 = Py_None; +} +// @snippet qopenglversionfunctionsfactory-get diff --git a/sources/pyside2/PySide2/qopenglversionfunctionsfactory.h b/sources/pyside2/PySide2/qopenglversionfunctionsfactory.h new file mode 100644 index 000000000..27b8373fa --- /dev/null +++ b/sources/pyside2/PySide2/qopenglversionfunctionsfactory.h @@ -0,0 +1,45 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt for Python. +** +** $QT_BEGIN_LICENSE:COMM$ +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QOPENGLVERSIONFUNCTIONSFACTORY_H +#define QOPENGLVERSIONFUNCTIONSFACTORY_H + +#include <QtGui/QOpenGLContext> + +QT_BEGIN_NAMESPACE + +class QOpenGLVersionProfile; + +class QOpenGLVersionFunctionsFactory +{ +public: + static QAbstractOpenGLFunctions *get(const QOpenGLVersionProfile &versionProfile, + QOpenGLContext *context) + { + return context + ? context->versionFunctions(versionProfile) + : nullptr; + } +}; + +QT_END_NAMESPACE + +#endif // QOPENGLVERSIONFUNCTIONSFACTORY_H diff --git a/sources/pyside2/PySide2/templates/gui_common.xml b/sources/pyside2/PySide2/templates/gui_common.xml index a139a5fe9..16116877f 100644 --- a/sources/pyside2/PySide2/templates/gui_common.xml +++ b/sources/pyside2/PySide2/templates/gui_common.xml @@ -80,8 +80,8 @@ </template> <template name="qimage_buffer_constructor"> - auto ptr = reinterpret_cast<uchar*>(Shiboken::Buffer::getPointer(%PYARG_1)); - %0 = new %TYPE(ptr, %ARGS); + auto *ptr = reinterpret_cast<uchar *>(Shiboken::Buffer::copyData(%PYARG_1)); + %0 = new %TYPE(ptr, %ARGS, std::free); </template> <template name="qcolor_repr"> |