Skip to content

Commit 0e6a9b1

Browse files
committed
Create correct __enter__ and __exit__ methods for QMutexLocker, QReadLocker, and QWriteLocker
1 parent d13b66c commit 0e6a9b1

File tree

1 file changed

+19
-3
lines changed

1 file changed

+19
-3
lines changed

generator/typesystem_core.xml

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,6 @@
467467
<rejection class="QObjectUserData"/>
468468
<rejection class="QPluginLoader"/>
469469
<rejection class="QPointer"/>
470-
<rejection class="QReadLocker"/>
471470
<rejection class="QSet"/>
472471
<rejection class="QSetIterator"/>
473472
<rejection class="QSharedData"/>
@@ -483,7 +482,6 @@
483482
<rejection class="QVectorData"/>
484483
<rejection class="QVectorIterator"/>
485484
<rejection class="QVectorTypedData"/>
486-
<rejection class="QWriteLocker"/>
487485
<rejection class="QtPrivate"/>
488486
<rejection class="qGreater"/>
489487
<rejection class="qLess"/>
@@ -1271,9 +1269,27 @@
12711269
<object-type name="QLibraryInfo"/>
12721270
<object-type name="QMutex"/>
12731271
<value-type name="QMutexLocker">
1272+
<!-- special handling for context handlers -->
1273+
<inject-code class="pywrap-operators">PythonQt::Type_EnterExit</inject-code>
12741274
<inject-code class="pywrap-h">
12751275
void __enter__(QMutexLocker* self) {}
1276-
void __exit__(QMutexLocker* self) { self->unlock(); }
1276+
void __exit__(QMutexLocker* self, PyObject* type, PyObject* value, PyObject* traceback) { self->unlock(); }
1277+
</inject-code>
1278+
</value-type>
1279+
<value-type name="QReadLocker">
1280+
<!-- special handling for context handlers -->
1281+
<inject-code class="pywrap-operators">PythonQt::Type_EnterExit</inject-code>
1282+
<inject-code class="pywrap-h">
1283+
void __enter__(QReadLocker* self) {}
1284+
void __exit__(QReadLocker* self, PyObject* type, PyObject* value, PyObject* traceback) { self->unlock(); }
1285+
</inject-code>
1286+
</value-type>
1287+
<value-type name="QWriteLocker">
1288+
<!-- special handling for context handlers -->
1289+
<inject-code class="pywrap-operators">PythonQt::Type_EnterExit</inject-code>
1290+
<inject-code class="pywrap-h">
1291+
void __enter__(QWriteLocker* self) {}
1292+
void __exit__(QWriteLocker* self, PyObject* type, PyObject* value, PyObject* traceback) { self->unlock(); }
12771293
</inject-code>
12781294
</value-type>
12791295
<object-type name="QSemaphore"/>

0 commit comments

Comments
 (0)