QDBusArgumentPrivate::createSignature: Accept QMetaType as argument

This gives more information than an int, also simplifies the code
slightly.

Change-Id: I76c00230386d74c70d294e638b4927de883f03ff
Reviewed-by: Marc Mutz <marc.mutz@qt.io>
bb10
Ievgenii Meshcheriakov 2023-09-06 11:27:07 +02:00
parent 647aca1e7c
commit 9d4e4deaa2
3 changed files with 6 additions and 6 deletions

View File

@ -31,7 +31,7 @@ QDBusArgumentPrivate::~QDBusArgumentPrivate()
q_dbus_message_unref(message);
}
QByteArray QDBusArgumentPrivate::createSignature(int id)
QByteArray QDBusArgumentPrivate::createSignature(QMetaType type)
{
if (!qdbus_loadLibDBus())
return "";
@ -41,7 +41,7 @@ QByteArray QDBusArgumentPrivate::createSignature(int id)
marshaller->ba = &signature;
// run it
QVariant v{QMetaType(id)};
QVariant v{type};
QDBusArgument arg(marshaller);
QDBusMetaType::marshall(arg, v.metaType(), v.constData());
arg.d = nullptr;
@ -53,14 +53,14 @@ QByteArray QDBusArgumentPrivate::createSignature(int id)
if (signature.isEmpty() || !ok || !QDBusUtil::isValidSingleSignature(QString::fromLatin1(signature))) {
qWarning("QDBusMarshaller: type '%s' produces invalid D-Bus signature '%s' "
"(Did you forget to call beginStructure() ?)",
QMetaType(id).name(), signature.isEmpty() ? "<empty>" : signature.constData());
type.name(), signature.isEmpty() ? "<empty>" : signature.constData());
return "";
} else if ((signature.at(0) != DBUS_TYPE_ARRAY && signature.at(0) != DBUS_STRUCT_BEGIN_CHAR) ||
(signature.at(0) == DBUS_TYPE_ARRAY && (signature.at(1) == DBUS_TYPE_BYTE ||
signature.at(1) == DBUS_TYPE_STRING))) {
qWarning("QDBusMarshaller: type '%s' attempts to redefine basic D-Bus type '%s' (%s) "
"(Did you forget to call beginStructure() ?)",
QMetaType(id).name(), signature.constData(),
type.name(), signature.constData(),
QDBusMetaType::signatureToMetaType(signature).name());
return "";
}

View File

@ -46,7 +46,7 @@ public:
QDBusMarshaller *marshaller();
QDBusDemarshaller *demarshaller();
static QByteArray createSignature(int id);
static QByteArray createSignature(QMetaType type);
static inline QDBusArgument create(QDBusArgumentPrivate *d)
{
QDBusArgument q(d);

View File

@ -471,7 +471,7 @@ const char *QDBusMetaType::typeToSignature(QMetaType type)
{
// createSignature will never return a null QByteArray
// if there was an error, it'll return ""
QByteArray signature = QDBusArgumentPrivate::createSignature(type.id());
QByteArray signature = QDBusArgumentPrivate::createSignature(type);
// re-acquire lock
QWriteLocker locker(&ct->lock);