Fixed qt_metacall, now everything works as it should.
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Lauro Moura <lauro.neto@openbossa.org>
This commit is contained in:
parent
e20a97a480
commit
59b4f2b59d
4 changed files with 59 additions and 65 deletions
|
|
@ -98,29 +98,26 @@ void functionFree(void *self)
|
|||
|
||||
PyObject* functionCall(PyObject* self, PyObject* args, PyObject* kw)
|
||||
{
|
||||
QGenericArgument gArgs[10];
|
||||
PySideMetaFunction* function = reinterpret_cast<PySideMetaFunction*>(self);
|
||||
QList<QVariant*> vArgs;
|
||||
QMetaMethod method = function->d->method;
|
||||
QList<QByteArray> pTypes = method.parameterTypes();
|
||||
int numArgs = pTypes.size();
|
||||
|
||||
Shiboken::TypeResolver* typeResolver = Shiboken::TypeResolver::get("QVariant");
|
||||
static Shiboken::TypeResolver* typeResolver = Shiboken::TypeResolver::get("QVariant");
|
||||
Q_ASSERT(typeResolver);
|
||||
for(int i=0; i < numArgs; i++) {
|
||||
QVariant *vArg;
|
||||
|
||||
QGenericArgument gArgs[10];
|
||||
QVariant vArgs[10];
|
||||
PySideMetaFunction* function = reinterpret_cast<PySideMetaFunction*>(self);
|
||||
QMetaMethod method = function->d->method;
|
||||
int argsGiven = method.parameterTypes().size();
|
||||
|
||||
for (int i = 0; i < argsGiven; ++i) {
|
||||
Shiboken::AutoDecRef pyArg(PySequence_GetItem(args, i));
|
||||
typeResolver->toCpp(pyArg, (void**)&vArg, true);
|
||||
vArgs.append(vArg);
|
||||
gArgs[i] = Q_ARG(QVariant, *vArg);
|
||||
gArgs[i] = Q_ARG(QVariant, vArgs[i]);
|
||||
void* v[1] = { &vArgs[i] };
|
||||
typeResolver->toCpp(pyArg, v);
|
||||
}
|
||||
|
||||
QVariant retVariant;
|
||||
QGenericReturnArgument returnValue = Q_RETURN_ARG(QVariant, retVariant);
|
||||
method.invoke(function->d->qobject, returnValue, gArgs[0], gArgs[1], gArgs[2], gArgs[3], gArgs[4], gArgs[5], gArgs[6], gArgs[7], gArgs[8], gArgs[9]);
|
||||
|
||||
while(!vArgs.isEmpty())
|
||||
delete vArgs.takeFirst();
|
||||
|
||||
if (retVariant.isValid())
|
||||
return typeResolver->toPython(&retVariant);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue