diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-10-29 14:10:02 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-10-29 14:15:29 +0100 |
commit | d15a65c93717b8e69352a19dd81c3b08adcef996 (patch) | |
tree | ec8feeb40061b7ddf4f40e38cece9fe67e4957ec | |
parent | f4a6d74852b0ba6711195a9c3fc9356e677a3409 (diff) | |
parent | 6978325323208c395d135f19847a8ad0b13f93f9 (diff) |
Merge remote-tracking branch 'origin/5.11' into 5.12
Change-Id: I3bb491686968e81382c135ab737da259d9796f52
-rw-r--r-- | missing_bindings.py | 14 | ||||
-rw-r--r-- | sources/pyside2/PySide2/QtCore/typesystem_core_common.xml | 4 | ||||
-rw-r--r-- | sources/pyside2/PySide2/QtQml/pysideqmlregistertype.cpp | 4 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pysideclassinfo.cpp | 2 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pysidemetafunction.cpp | 2 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pysideqflags.cpp | 2 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pysidesignal.cpp | 6 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pysideslot.cpp | 2 | ||||
-rw-r--r-- | sources/pyside2/libpyside/pysideweakref.cpp | 2 | ||||
-rw-r--r-- | sources/shiboken2/generator/shiboken2/cppgenerator.cpp | 2 | ||||
-rw-r--r-- | sources/shiboken2/libshiboken/basewrapper.cpp | 6 | ||||
-rw-r--r-- | sources/shiboken2/libshiboken/basewrapper.h | 12 | ||||
-rw-r--r-- | sources/shiboken2/libshiboken/pep384impl_doc.rst | 13 | ||||
-rw-r--r-- | sources/shiboken2/libshiboken/sbkenum.cpp | 2 | ||||
-rw-r--r-- | sources/shiboken2/libshiboken/voidptr.cpp | 2 |
15 files changed, 44 insertions, 31 deletions
diff --git a/missing_bindings.py b/missing_bindings.py index ad7cfce52..dfd94912d 100644 --- a/missing_bindings.py +++ b/missing_bindings.py @@ -106,7 +106,7 @@ modules_to_test['QtX11Extras'] = 'qtx11extras-module.html' modules_to_test['QtWinExtras'] = 'qtwinextras-module.html' modules_to_test['QtXml'] = 'qtxml-module.html' modules_to_test['QtXmlPatterns'] = 'qtxmlpatterns-module.html' -modules_to_test['QtCharts'] = 'qt-charts-module.html' +modules_to_test['QtCharts'] = 'qtcharts-module.html' modules_to_test['QtDataVisualization'] = 'qtdatavisualization-module.html' types_to_ignore = set() @@ -216,7 +216,7 @@ qt_documentation_website_prefixes['5.6'] = 'http://doc.qt.io/qt-5.6/' qt_documentation_website_prefixes['5.8'] = 'http://doc.qt.io/qt-5.8/' qt_documentation_website_prefixes['5.9'] = 'http://doc.qt.io/qt-5.9/' qt_documentation_website_prefixes['5.10'] = 'http://doc.qt.io/qt-5.10/' -qt_documentation_website_prefixes['5.11'] = 'http://doc.qt.io/qt-5/' +qt_documentation_website_prefixes['5.11'] = 'http://doc.qt.io/qt-5.11/' qt_documentation_website_prefixes['dev'] = 'http://doc-snapshots.qt.io/qt5-dev/' @@ -347,8 +347,12 @@ for module_name in modules_to_test.keys(): continue try: + pyqt_module_name = module_name + if module_name == "QtCharts": + pyqt_module_name = module_name[:-1] + pyqt_tested_module = getattr(__import__(pyqt_package_name, - fromlist=[module_name]), module_name) + fromlist=[pyqt_module_name]), pyqt_module_name) except Exception as e: log("\nCould not load {}.{} for comparison. " "Received error: {}.\n".format(pyqt_package_name, module_name, @@ -378,13 +382,13 @@ for module_name in modules_to_test.keys(): try: pyside_qualified_type = 'pyside_tested_module.' - if "Charts" in module_name: + if "QtCharts" == module_name: pyside_qualified_type += 'QtCharts.' elif "DataVisualization" in module_name: pyside_qualified_type += 'QtDataVisualization.' pyside_qualified_type += qt_type - o = eval(pyside_qualified_type) + eval(pyside_qualified_type) except: missing_type = qt_type missing_types_count += 1 diff --git a/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml b/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml index d2951fe9c..005fd0684 100644 --- a/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml +++ b/sources/pyside2/PySide2/QtCore/typesystem_core_common.xml @@ -74,6 +74,10 @@ <function signature="qVersion()" /> <function signature="qrand()" /> <function signature="qsrand(uint)" /> + <function signature="qCompress(const uchar*,int,int)"/> + <function signature="qCompress(const QByteArray&,int)"/> + <function signature="qUncompress(const uchar*,int)"/> + <function signature="qUncompress(const QByteArray&)"/> <inject-code class="native" position="beginning"> #include <pyside.h> diff --git a/sources/pyside2/PySide2/QtQml/pysideqmlregistertype.cpp b/sources/pyside2/PySide2/QtQml/pysideqmlregistertype.cpp index 5f13497ea..9d9ddc799 100644 --- a/sources/pyside2/PySide2/QtQml/pysideqmlregistertype.cpp +++ b/sources/pyside2/PySide2/QtQml/pysideqmlregistertype.cpp @@ -235,7 +235,7 @@ void propListTpFree(void* self) static PyType_Slot PropertyListType_slots[] = { {Py_tp_init, (void *)propListTpInit}, {Py_tp_free, (void *)propListTpFree}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PropertyListType_spec = { @@ -449,7 +449,7 @@ static PyType_Slot QtQml_VolatileBoolType_slots[] = { {Py_tp_str, (void *)reinterpret_cast<reprfunc>(QtQml_VolatileBoolObject_str)}, {Py_tp_methods, (void *)QtQml_VolatileBoolObject_methods}, {Py_tp_new, (void *)QtQml_VolatileBoolObject_new}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec QtQml_VolatileBoolType_spec = { diff --git a/sources/pyside2/libpyside/pysideclassinfo.cpp b/sources/pyside2/libpyside/pysideclassinfo.cpp index 88292024f..4edf0fa91 100644 --- a/sources/pyside2/libpyside/pysideclassinfo.cpp +++ b/sources/pyside2/libpyside/pysideclassinfo.cpp @@ -61,7 +61,7 @@ static PyType_Slot PySideClassInfoType_slots[] = { {Py_tp_init, (void *)classInfoTpInit}, {Py_tp_new, (void *)classInfoTpNew}, {Py_tp_free, (void *)classInfoFree}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideClassInfoType_spec = { diff --git a/sources/pyside2/libpyside/pysidemetafunction.cpp b/sources/pyside2/libpyside/pysidemetafunction.cpp index 80496764d..4cdc7ec16 100644 --- a/sources/pyside2/libpyside/pysidemetafunction.cpp +++ b/sources/pyside2/libpyside/pysidemetafunction.cpp @@ -61,7 +61,7 @@ static PyType_Slot PySideMetaFunctionType_slots[] = { {Py_tp_call, (void *)functionCall}, {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_free, (void *)functionFree}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideMetaFunctionType_spec = { diff --git a/sources/pyside2/libpyside/pysideqflags.cpp b/sources/pyside2/libpyside/pysideqflags.cpp index f948ecac7..cb57031b0 100644 --- a/sources/pyside2/libpyside/pysideqflags.cpp +++ b/sources/pyside2/libpyside/pysideqflags.cpp @@ -152,7 +152,7 @@ namespace QFlags #endif {Py_tp_new, (void *)PySideQFlagsNew}, {Py_tp_richcompare, (void *)PySideQFlagsRichCompare}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec SbkNewQFlagsType_spec = { diff --git a/sources/pyside2/libpyside/pysidesignal.cpp b/sources/pyside2/libpyside/pysidesignal.cpp index 3b21b16da..e7fd389a8 100644 --- a/sources/pyside2/libpyside/pysidesignal.cpp +++ b/sources/pyside2/libpyside/pysidesignal.cpp @@ -109,7 +109,7 @@ static PyType_Slot PySideSignalMetaType_slots[] = { {Py_tp_methods, (void *)Signal_methods}, {Py_tp_base, (void *)&PyType_Type}, {Py_tp_free, (void *)PyObject_GC_Del}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideSignalMetaType_spec = { @@ -141,7 +141,7 @@ static PyType_Slot PySideSignalType_slots[] = { {Py_tp_init, (void *)signalTpInit}, {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_free, (void *)signalFree}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideSignalType_spec = { @@ -180,7 +180,7 @@ static PyType_Slot PySideSignalInstanceType_slots[] = { {Py_tp_methods, (void *)SignalInstance_methods}, {Py_tp_new, (void *)PyType_GenericNew}, {Py_tp_free, (void *)signalInstanceFree}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideSignalInstanceType_spec = { diff --git a/sources/pyside2/libpyside/pysideslot.cpp b/sources/pyside2/libpyside/pysideslot.cpp index 0dff3bafb..6f6658cf8 100644 --- a/sources/pyside2/libpyside/pysideslot.cpp +++ b/sources/pyside2/libpyside/pysideslot.cpp @@ -67,7 +67,7 @@ static PyType_Slot PySideSlotType_slots[] = { {Py_tp_call, (void *)slotCall}, {Py_tp_init, (void *)slotTpInit}, {Py_tp_new, (void *)PyType_GenericNew}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideSlotType_spec = { diff --git a/sources/pyside2/libpyside/pysideweakref.cpp b/sources/pyside2/libpyside/pysideweakref.cpp index a0b7f4aaa..6b5073db8 100644 --- a/sources/pyside2/libpyside/pysideweakref.cpp +++ b/sources/pyside2/libpyside/pysideweakref.cpp @@ -53,7 +53,7 @@ static PyObject* CallableObject_call(PyObject* callable_object, PyObject* args, static PyType_Slot PySideCallableObjectType_slots[] = { {Py_tp_call, (void *)CallableObject_call}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec PySideCallableObjectType_spec = { diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp index 29f28a1a7..99947d347 100644 --- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp +++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp @@ -3801,7 +3801,7 @@ void CppGenerator::writeClassDefinition(QTextStream &s, if (metaClass->isNamespace() || metaClass->hasPrivateDestructor()) { tp_dealloc = metaClass->hasPrivateDestructor() ? QLatin1String("SbkDeallocWrapperWithPrivateDtor") : - QLatin1String("SbkDummyDealloc /* PYSIDE-595: Prevent replacement of \"0\" with subtype_dealloc. */"); + QLatin1String("object_dealloc /* PYSIDE-832: Prevent replacement of \"0\" with subtype_dealloc. */"); tp_init = QLatin1String("0"); } else { QString deallocClassName; diff --git a/sources/shiboken2/libshiboken/basewrapper.cpp b/sources/shiboken2/libshiboken/basewrapper.cpp index 2f5f27989..c9e3b9d1b 100644 --- a/sources/shiboken2/libshiboken/basewrapper.cpp +++ b/sources/shiboken2/libshiboken/basewrapper.cpp @@ -447,8 +447,10 @@ PyObject* SbkQAppTpNew(PyTypeObject* subtype, PyObject *, PyObject *) } void -SbkDummyDealloc(PyObject *) -{} +object_dealloc(PyObject *self) +{ + Py_TYPE(self)->tp_free(self); +} PyObject * SbkDummyNew(PyTypeObject *type, PyObject*, PyObject*) diff --git a/sources/shiboken2/libshiboken/basewrapper.h b/sources/shiboken2/libshiboken/basewrapper.h index f8940b842..65849d783 100644 --- a/sources/shiboken2/libshiboken/basewrapper.h +++ b/sources/shiboken2/libshiboken/basewrapper.h @@ -109,17 +109,15 @@ LIBSHIBOKEN_API PyObject* SbkObjectTpNew(PyTypeObject* subtype, PyObject*, PyObj LIBSHIBOKEN_API PyObject* SbkQAppTpNew(PyTypeObject *subtype, PyObject *args, PyObject *kwds); /** - * PYSIDE-595: Use a null deallocator instead of nullptr. + * PYSIDE-832: Use object_dealloc instead of nullptr. * * When moving to heaptypes, we were struck by a special default behavior of * PyType_FromSpecWithBases that inserts subtype_dealloc when tp_dealloc is - * nullptr. To prevent inserting this, we use a null deallocator that is there - * as a placeholder. - * - * The same holds for a null tp_new. We use one that raises the right error. + * nullptr. But the default before conversion to heaptypes was to assign + * object_dealloc. This seems to be a bug in the Limited API. */ -LIBSHIBOKEN_API void SbkDummyDealloc(PyObject*); -LIBSHIBOKEN_API PyObject *SbkDummyNew(PyTypeObject *type, PyObject*, PyObject*); +LIBSHIBOKEN_API void object_dealloc(PyObject *); +LIBSHIBOKEN_API PyObject *SbkDummyNew(PyTypeObject *type, PyObject *, PyObject *); } // extern "C" diff --git a/sources/shiboken2/libshiboken/pep384impl_doc.rst b/sources/shiboken2/libshiboken/pep384impl_doc.rst index 9974f737b..2844249ad 100644 --- a/sources/shiboken2/libshiboken/pep384impl_doc.rst +++ b/sources/shiboken2/libshiboken/pep384impl_doc.rst @@ -426,11 +426,16 @@ many headaches:: type->tp_dealloc = subtype_dealloc; } -So, if you think you have no ``tp_dealloc`` field set, you will unwantedly -get ``subtype_dealloc``, which in the case of PySide always was wrong! +In fact, before the move to the new API, the ``PyType_Ready`` function +filled empty ``tp_dealloc`` fields with ``object_dealloc``. And the code +that has been written with that in mind now becomes pretty wrong if suddenly +``subtype_dealloc`` is used. + +The way out was to explicitly provide an ``object_dealloc`` function. +This would then again impose a problem, because ``object_dealloc`` is not +public. Writing our own version is easy, but it again needs access to +type objects. But fortunately, we have broken this rule, already... -The way out was to use a dummy function that has no effect other than -being something not NULL. * The new types are only partially allocated diff --git a/sources/shiboken2/libshiboken/sbkenum.cpp b/sources/shiboken2/libshiboken/sbkenum.cpp index 4d516f1e8..3c6582adc 100644 --- a/sources/shiboken2/libshiboken/sbkenum.cpp +++ b/sources/shiboken2/libshiboken/sbkenum.cpp @@ -512,7 +512,7 @@ static PyType_Slot SbkNewType_slots[] = { {Py_nb_index, (void *)enum_int}, {Py_tp_richcompare, (void *)enum_richcompare}, {Py_tp_hash, (void *)enum_hash}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec SbkNewType_spec = { diff --git a/sources/shiboken2/libshiboken/voidptr.cpp b/sources/shiboken2/libshiboken/voidptr.cpp index 3a0dbb434..0d7b6b9cd 100644 --- a/sources/shiboken2/libshiboken/voidptr.cpp +++ b/sources/shiboken2/libshiboken/voidptr.cpp @@ -224,7 +224,7 @@ static PyType_Slot SbkVoidPtrType_slots[] = { {Py_tp_richcompare, (void *)SbkVoidPtrObject_richcmp}, {Py_tp_init, (void *)SbkVoidPtrObject_init}, {Py_tp_new, (void *)SbkVoidPtrObject_new}, - {Py_tp_dealloc, (void *)SbkDummyDealloc}, + {Py_tp_dealloc, (void *)object_dealloc}, {0, 0} }; static PyType_Spec SbkVoidPtrType_spec = { |