diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-03-31 15:08:29 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-03-31 15:08:29 (GMT) |
commit | 9d7ab0dc82e15f5960fc0e695da95477b518804f (patch) | |
tree | 172d9e8f30d5b1a6efaa8bf626aa53140a4401d1 /src/script/api/qscriptengine.cpp | |
parent | 0373325dd1390682922dd07614214c453d473ce3 (diff) | |
parent | 1552a6930d02bd574f5bb7c17fa5994dcb8a9e43 (diff) | |
download | Qt-9d7ab0dc82e15f5960fc0e695da95477b518804f.zip Qt-9d7ab0dc82e15f5960fc0e695da95477b518804f.tar.gz Qt-9d7ab0dc82e15f5960fc0e695da95477b518804f.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2 into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/oslo-staging-2: (60 commits)
Total makeover of SVG image reader
Add a QGraphicsItem::updateMicroFocus() to QGraphicsItem.
Micro optimization after feedback from Jan-Arve.
Show only one dialog when using QFileDialog on Mac.
Re-fix compilation: re-add symbols introduced in Qt 4.6.3 to Qt 4.7
Fix bad merge from 4.6.
Doc: Updated the qdoc manual with i18n info. Fixed a code example.
Fix QStaticText test on Mac
Support the pen set on the painter in QStaticText when using rich text
Fix setting font for QStaticText on Linux and Mac
Hack .pro files on windows to define QT_NO_EGL
Fix QDate::isLeapYear() for years < 1
One more test for chinese codecs
QScript: More missing APIShim
QScriptEngine: Fix reentrency involving creation and desctructions of QScriptEngines
Work-around Symbian 10.1's broken egl.h
Add some #warnings to debug Symbian EGL build failure
Don't detect EGLImage presence by testing function pointers
Implement proper QStaticText support in QPaintBuffer
Make QStaticText layout lazy
...
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r-- | src/script/api/qscriptengine.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/script/api/qscriptengine.cpp b/src/script/api/qscriptengine.cpp index b322523..70f798e 100644 --- a/src/script/api/qscriptengine.cpp +++ b/src/script/api/qscriptengine.cpp @@ -875,7 +875,7 @@ QScriptEnginePrivate::QScriptEnginePrivate() return; } JSC::initializeThreading(); - + JSC::IdentifierTable *oldTable = JSC::currentIdentifierTable(); globalData = JSC::JSGlobalData::create().releaseRef(); globalData->clientData = new QScript::GlobalClientData(this); JSC::JSGlobalObject *globalObject = new (globalData)QScript::GlobalObject(); @@ -911,11 +911,12 @@ QScriptEnginePrivate::QScriptEnginePrivate() activeAgent = 0; agentLineNumber = -1; processEventsInterval = -1; + JSC::setCurrentIdentifierTable(oldTable); } QScriptEnginePrivate::~QScriptEnginePrivate() { - JSC::setCurrentIdentifierTable(globalData->identifierTable); + QScript::APIShim shim(this); //disconnect all loadedScripts and generate all jsc::debugger::scriptUnload events QHash<intptr_t,QScript::UStringSourceProviderWithFeedback*>::const_iterator it; @@ -3277,6 +3278,7 @@ bool QScriptEnginePrivate::hasDemarshalFunction(int type) const bool QScriptEngine::convert(const QScriptValue &value, int type, void *ptr) { Q_D(QScriptEngine); + QScript::APIShim shim(d); return QScriptEnginePrivate::convertValue(d->currentFrame, d->scriptValueToJSCValue(value), type, ptr); } @@ -3289,8 +3291,12 @@ bool QScriptEngine::convertV2(const QScriptValue &value, int type, void *ptr) if (vp) { switch (vp->type) { case QScriptValuePrivate::JavaScriptCore: { - JSC::ExecState *exec = vp->engine ? vp->engine->currentFrame : 0; - return QScriptEnginePrivate::convertValue(exec, vp->jscValue, type, ptr); + if (vp->engine) { + QScript::APIShim shim(vp->engine); + return QScriptEnginePrivate::convertValue(vp->engine->currentFrame, vp->jscValue, type, ptr); + } else { + return QScriptEnginePrivate::convertValue(0, vp->jscValue, type, ptr); + } } case QScriptValuePrivate::Number: return QScriptEnginePrivate::convertNumber(vp->numberValue, type, ptr); @@ -3341,6 +3347,7 @@ void QScriptEngine::registerCustomType(int type, MarshalFunction mf, void QScriptEngine::installTranslatorFunctions(const QScriptValue &object) { Q_D(QScriptEngine); + QScript::APIShim shim(d); JSC::ExecState* exec = d->currentFrame; JSC::JSValue jscObject = d->scriptValueToJSCValue(object); JSC::JSGlobalObject *glob = d->originalGlobalObject(); |