diff options
Diffstat (limited to 'src/dbus/qdbusmetaobject.cpp')
-rw-r--r-- | src/dbus/qdbusmetaobject.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp index 799c66f6f9..127cf6658c 100644 --- a/src/dbus/qdbusmetaobject.cpp +++ b/src/dbus/qdbusmetaobject.cpp @@ -75,6 +75,7 @@ private: QByteArray name; QVarLengthArray<int, 4> inputTypes; QVarLengthArray<int, 4> outputTypes; + QByteArray rawReturnType; int flags; }; @@ -276,6 +277,9 @@ void QDBusMetaObjectGenerator::parseMethods() mm.outputTypes.append(type.id); + if (i == 0 && type.id == -1) { + mm.rawReturnType = type.name; + } if (i != 0) { // non-const ref parameter mm.parameterNames.append(arg.name.toLatin1()); @@ -471,10 +475,14 @@ void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj) int type; QByteArray typeName; if (i < 0) { // Return type - if (!mm.outputTypes.isEmpty()) + if (!mm.outputTypes.isEmpty()) { type = mm.outputTypes.first(); - else + if (type == -1) { + type = IsUnresolvedType | strings.enter(mm.rawReturnType); + } + } else { type = QMetaType::Void; + } } else if (i < mm.inputTypes.size()) { type = mm.inputTypes.at(i); } else { |