Python build fix.

This commit is contained in:
Gunnar Beutner 2013-03-27 06:27:44 +00:00
parent 34d6b42b38
commit b9ded4a851
3 changed files with 13 additions and 13 deletions

View File

@ -74,8 +74,7 @@ void PythonInterpreter::UnregisterPythonFunction(const String& name)
m_Functions.erase(name);
}
void PythonInterpreter::ProcessCall(const ScriptTask::Ptr& task, const String& function,
const std::vector<Value>& arguments)
Value PythonInterpreter::ProcessCall(const String& function, const std::vector<Value>& arguments)
{
ObjectLock olock(this);
@ -120,11 +119,14 @@ void PythonInterpreter::ProcessCall(const ScriptTask::Ptr& task, const String& f
Value vresult = PythonLanguage::MarshalFromPython(result);
Py_DECREF(result);
task->FinishResult(vresult);
} catch (...) {
task->FinishException(boost::current_exception());
}
m_Language->SetCurrentInterpreter(interp);
PyEval_ReleaseThread(m_ThreadState);
m_Language->SetCurrentInterpreter(interp);
PyEval_ReleaseThread(m_ThreadState);
return vresult;
} catch (...) {
m_Language->SetCurrentInterpreter(interp);
PyEval_ReleaseThread(m_ThreadState);
throw;
}
}

View File

@ -49,8 +49,7 @@ protected:
PyThreadState *m_ThreadState;
std::map<String, PyObject *> m_Functions;
virtual void ProcessCall(const ScriptTask::Ptr& task, const String& function,
const std::vector<Value>& arguments);
virtual Value ProcessCall(const String& function, const std::vector<Value>& arguments);
};
}

View File

@ -19,6 +19,7 @@
#include "python/pythonlanguage.h"
#include "python/pythoninterpreter.h"
#include "base/scriptfunction.h"
#include "base/dynamictype.h"
#include "base/objectlock.h"
#include "base/application.h"
@ -320,9 +321,7 @@ PyObject *PythonLanguage::PyCallNativeFunction(PyObject *self, PyObject *args)
Value result;
try {
ScriptTask::Ptr task = boost::make_shared<ScriptTask>(function, arguments);
task->Start();
result = task->GetResult();
result = function->Invoke(arguments);
} catch (const std::exception& ex) {
PyEval_RestoreThread(tstate);