summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects/qremoteobjectsourceio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/remoteobjects/qremoteobjectsourceio.cpp')
-rw-r--r--src/remoteobjects/qremoteobjectsourceio.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/remoteobjects/qremoteobjectsourceio.cpp b/src/remoteobjects/qremoteobjectsourceio.cpp
index bde010b..35f3bfd 100644
--- a/src/remoteobjects/qremoteobjectsourceio.cpp
+++ b/src/remoteobjects/qremoteobjectsourceio.cpp
@@ -235,8 +235,15 @@ void QRemoteObjectSourceIo::onServerRead(QObject *conn)
}
if (source->m_api->isAdapterMethod(index))
qRODebug(this) << "Adapter (method) Invoke-->" << m_rxName << source->m_adapter->metaObject()->method(resolvedIndex).name();
- else
- qRODebug(this) << "Source (method) Invoke-->" << m_rxName << source->m_object->metaObject()->method(resolvedIndex).name();
+ else {
+ qRODebug(this) << "Source (method) Invoke-->" << m_rxName << source->m_object->metaObject()->method(resolvedIndex).methodSignature();
+ auto method = source->m_object->metaObject()->method(resolvedIndex);
+ const int parameterCount = method.parameterCount();
+ for (int i = 0; i < parameterCount; i++) {
+ if (QMetaType::typeFlags(method.parameterType(i)).testFlag(QMetaType::IsEnumeration))
+ m_rxArgs[i].convert(method.parameterType(i));
+ }
+ }
int typeId = QMetaType::type(source->m_api->typeName(index).constData());
if (!QMetaType(typeId).sizeOf())
typeId = QVariant::Invalid;
@@ -260,6 +267,8 @@ void QRemoteObjectSourceIo::onServerRead(QObject *conn)
watcher->deleteLater();
});
} else {
+ if (QMetaType::typeFlags(returnValue.userType()).testFlag(QMetaType::IsEnumeration))
+ returnValue = QVariant::fromValue<qint32>(returnValue.toInt());
serializeInvokeReplyPacket(m_packet, m_rxName, serialId, returnValue);
connection->write(m_packet.array, m_packet.size);
}