diff options
author | Mateusz Skowroński <skowri@gmail.com> | 2016-02-01 06:42:11 +0100 |
---|---|---|
committer | Mateusz Skowroński <skowri@gmail.com> | 2016-02-01 15:52:20 -0600 |
commit | 3eea8cef339d2b8d6f39a7401c2921bce5a4d65d (patch) | |
tree | e45b992f8860d3b3656ff699c74080885ee2608a /libpyside | |
parent | 72c5289c41018d332d76cbd03c389825a946d049 (diff) |
Fix building signalmanager.cpp with Qt < 5.5.0.
1. Heap namespace has been introduced in Qt 5.5.0.
2. Throw methods have been moved from ExecutionContext to ExecutionEngine in Qt 5.5.0.
Source 1: https://github.com/qtproject/qtdeclarative/commit/84aae25c0b3003fb846568cf26a2c7150db14d9d
Source 2: https://github.com/qtproject/qtdeclarative/commit/486948817b26da2c62802bb93a0f671715c609d4
Diffstat (limited to 'libpyside')
-rw-r--r-- | libpyside/signalmanager.cpp.in | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/libpyside/signalmanager.cpp.in b/libpyside/signalmanager.cpp.in index c477757de..adfc7942d 100644 --- a/libpyside/signalmanager.cpp.in +++ b/libpyside/signalmanager.cpp.in @@ -475,14 +475,21 @@ int SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, int id, if (data || !data->jsWrapper.isNullOrUndefined()) { QV4::ExecutionEngine *engine = data->jsWrapper.engine(); - #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) +#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) QV4::Heap::ExecutionContext *ctx = engine->current; - #else +#elif QT_VERSION >= QT_VERSION_CHECK(5, 5, 0) QV4::Heap::ExecutionContext *ctx = engine->currentContext(); - #endif +#else + QV4::ExecutionContext *ctx = engine->currentContext(); +#endif +#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0) if (ctx->type == QV4::Heap::ExecutionContext::Type_CallContext || ctx->type == QV4::Heap::ExecutionContext::Type_SimpleCallContext) { +#else + if (ctx->type == QV4::ExecutionContext::Type_CallContext || + ctx->type == QV4::ExecutionContext::Type_SimpleCallContext) { +#endif PyObject *errType, *errValue, *errTraceback; PyErr_Fetch(&errType, &errValue, &errTraceback); PyErr_Restore(errType, errValue, errTraceback); @@ -491,6 +498,7 @@ int SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, int id, PyErr_Print(); +#if QT_VERSION >= QT_VERSION_CHECK(5, 5, 0) if (errType == PyExc_SyntaxError) { return engine->throwSyntaxError(errString); } else if (errType == PyExc_TypeError) { @@ -498,6 +506,15 @@ int SignalManager::qt_metacall(QObject* object, QMetaObject::Call call, int id, } else { return engine->throwError(errString); } +#else + if (errType == PyExc_SyntaxError) { + return ctx->throwSyntaxError(errString); + } else if (errType == PyExc_TypeError) { + return ctx->throwTypeError(errString); + } else { + return ctx->throwError(errString); + } +#endif } } #endif |