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
parent
647aca1e7c
commit
9d4e4deaa2
|
|
@ -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 "";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue