Allow setting the device flags using GObject properties

This commit is contained in:
Richard Hughes 2019-11-25 20:41:00 +00:00 committed by Mario Limonciello
parent 741e1e5323
commit be956bdb66

View File

@ -61,6 +61,7 @@ typedef struct {
enum { enum {
PROP_0, PROP_0,
PROP_VERSION_FORMAT, PROP_VERSION_FORMAT,
PROP_FLAGS,
PROP_LAST PROP_LAST
}; };
@ -875,7 +876,10 @@ fwupd_device_set_flags (FwupdDevice *device, guint64 flags)
{ {
FwupdDevicePrivate *priv = GET_PRIVATE (device); FwupdDevicePrivate *priv = GET_PRIVATE (device);
g_return_if_fail (FWUPD_IS_DEVICE (device)); g_return_if_fail (FWUPD_IS_DEVICE (device));
if (priv->flags == flags)
return;
priv->flags = flags; priv->flags = flags;
g_object_notify (G_OBJECT (device), "flags");
} }
/** /**
@ -892,7 +896,12 @@ fwupd_device_add_flag (FwupdDevice *device, FwupdDeviceFlags flag)
{ {
FwupdDevicePrivate *priv = GET_PRIVATE (device); FwupdDevicePrivate *priv = GET_PRIVATE (device);
g_return_if_fail (FWUPD_IS_DEVICE (device)); g_return_if_fail (FWUPD_IS_DEVICE (device));
if (flag == 0)
return;
if ((priv->flags & flag) > 0)
return;
priv->flags |= flag; priv->flags |= flag;
g_object_notify (G_OBJECT (device), "flags");
} }
/** /**
@ -909,7 +918,12 @@ fwupd_device_remove_flag (FwupdDevice *device, FwupdDeviceFlags flag)
{ {
FwupdDevicePrivate *priv = GET_PRIVATE (device); FwupdDevicePrivate *priv = GET_PRIVATE (device);
g_return_if_fail (FWUPD_IS_DEVICE (device)); g_return_if_fail (FWUPD_IS_DEVICE (device));
if (flag == 0)
return;
if ((priv->flags & flag) == 0)
return;
priv->flags &= ~flag; priv->flags &= ~flag;
g_object_notify (G_OBJECT (device), "flags");
} }
/** /**
@ -1880,6 +1894,9 @@ fwupd_device_get_property (GObject *object, guint prop_id,
case PROP_VERSION_FORMAT: case PROP_VERSION_FORMAT:
g_value_set_uint (value, priv->version_format); g_value_set_uint (value, priv->version_format);
break; break;
case PROP_FLAGS:
g_value_set_uint64 (value, priv->flags);
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -1895,6 +1912,9 @@ fwupd_device_set_property (GObject *object, guint prop_id,
case PROP_VERSION_FORMAT: case PROP_VERSION_FORMAT:
fwupd_device_set_version_format (self, g_value_get_uint (value)); fwupd_device_set_version_format (self, g_value_get_uint (value));
break; break;
case PROP_FLAGS:
fwupd_device_set_flags (self, g_value_get_uint64 (value));
break;
default: default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break; break;
@ -1918,6 +1938,14 @@ fwupd_device_class_init (FwupdDeviceClass *klass)
G_PARAM_READWRITE | G_PARAM_READWRITE |
G_PARAM_STATIC_NAME); G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_VERSION_FORMAT, pspec); g_object_class_install_property (object_class, PROP_VERSION_FORMAT, pspec);
pspec = g_param_spec_uint64 ("flags", NULL, NULL,
FWUPD_DEVICE_FLAG_NONE,
FWUPD_DEVICE_FLAG_UNKNOWN,
FWUPD_DEVICE_FLAG_NONE,
G_PARAM_READWRITE |
G_PARAM_STATIC_NAME);
g_object_class_install_property (object_class, PROP_FLAGS, pspec);
} }
static void static void