mirror of
https://github.com/HifiExperiments/overte.git
synced 2025-08-09 06:10:52 +02:00
add more details to messages logged in entity scripts
This commit is contained in:
parent
c099cfe904
commit
ee43cfd892
1 changed files with 40 additions and 5 deletions
|
@ -109,6 +109,7 @@ int functionSignatureMetaID = qRegisterMetaType<QScriptEngine::FunctionSignature
|
||||||
int scriptEnginePointerMetaID = qRegisterMetaType<ScriptEnginePointer>();
|
int scriptEnginePointerMetaID = qRegisterMetaType<ScriptEnginePointer>();
|
||||||
|
|
||||||
static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
|
static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
|
||||||
|
// assemble the message by concatenating our arguments
|
||||||
QString message = "";
|
QString message = "";
|
||||||
for (int i = 0; i < context->argumentCount(); i++) {
|
for (int i = 0; i < context->argumentCount(); i++) {
|
||||||
if (i > 0) {
|
if (i > 0) {
|
||||||
|
@ -117,14 +118,48 @@ static QScriptValue debugPrint(QScriptContext* context, QScriptEngine* engine) {
|
||||||
message += context->argument(i).toString();
|
message += context->argument(i).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ScriptEngine *scriptEngine = qobject_cast<ScriptEngine*>(engine)) {
|
// was this generated by a script engine? If we don't recognize it then send the message and exit
|
||||||
scriptEngine->print(message);
|
ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine);
|
||||||
// prefix the script engine name to help disambiguate messages in the main debug log
|
if (scriptEngine == nullptr) {
|
||||||
qCDebug(scriptengine_script, "[%s] %s", qUtf8Printable(scriptEngine->getFilename()), qUtf8Printable(message));
|
|
||||||
} else {
|
|
||||||
qCDebug(scriptengine_script, "%s", qUtf8Printable(message));
|
qCDebug(scriptengine_script, "%s", qUtf8Printable(message));
|
||||||
|
return QScriptValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This message was sent by one of our script engines, let's try to see if we can find the source.
|
||||||
|
// Note that the first entry in the backtrace should be "print" and is somewhat useless to us
|
||||||
|
QScriptContext* userContext = context;
|
||||||
|
while (userContext != nullptr && QScriptContextInfo(userContext).functionType() == QScriptContextInfo::NativeFunction) {
|
||||||
|
userContext = userContext->parentContext();
|
||||||
|
}
|
||||||
|
QString location;
|
||||||
|
if (userContext != nullptr) {
|
||||||
|
QScriptContextInfo contextInfo(userContext);
|
||||||
|
QString fileName = contextInfo.fileName();
|
||||||
|
int lineNumber = contextInfo.lineNumber();
|
||||||
|
QString functionName = contextInfo.functionName();
|
||||||
|
|
||||||
|
location = functionName;
|
||||||
|
if (lineNumber != -1) {
|
||||||
|
location = QString("%1:%2").arg(location).arg(lineNumber);
|
||||||
|
}
|
||||||
|
if (!fileName.isEmpty()) {
|
||||||
|
if (location.isEmpty()) {
|
||||||
|
location = fileName;
|
||||||
|
} else {
|
||||||
|
location = QString("%1 at %2").arg(location).arg(fileName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (location.isEmpty()) {
|
||||||
|
location = scriptEngine->getFilename();
|
||||||
|
}
|
||||||
|
|
||||||
|
// give the script engine a chance to notify the system about this message
|
||||||
|
scriptEngine->print(message);
|
||||||
|
|
||||||
|
// send the message to debug log
|
||||||
|
qCDebug(scriptengine_script, "[%s] %s", qUtf8Printable(location), qUtf8Printable(message));
|
||||||
|
|
||||||
return QScriptValue();
|
return QScriptValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue