summaryrefslogtreecommitdiffstats
path: root/src/dbus/qdbusmetaobject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbus/qdbusmetaobject.cpp')
-rw-r--r--src/dbus/qdbusmetaobject.cpp12
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 {