summaryrefslogtreecommitdiffstats
path: root/src/script/api/qscriptengine.cpp
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-03-30 21:30:00 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-03-30 21:30:00 (GMT)
commit34b20a1c548203f7a7c79f3a1f56b2e44738d1cb (patch)
tree67c9ed9e692bbe71e6cd0244badc6db2e0de3cae /src/script/api/qscriptengine.cpp
parent1b7c80fb09e962c7a05249d4b2779b84701ed326 (diff)
parenta7f9db7091db3356434f188abd814e9deebe3d78 (diff)
downloadQt-34b20a1c548203f7a7c79f3a1f56b2e44738d1cb.zip
Qt-34b20a1c548203f7a7c79f3a1f56b2e44738d1cb.tar.gz
Qt-34b20a1c548203f7a7c79f3a1f56b2e44738d1cb.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: (61 commits) 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. Doc: Added links and notes to modules, ActiveQt and XMLPatterns docs. 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 Compile on MingW Fix QDate::isLeapYear() for years < 1 One more test for chinese codecs struct -> class, it's better. Add a a layout property in QGraphicsWidget. Fix QFileSystemModel to not install useless watchers on the filesystem 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 ...
Diffstat (limited to 'src/script/api/qscriptengine.cpp')
-rw-r--r--src/script/api/qscriptengine.cpp15
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();