trivial: Return the superclassed FuDevice from fu_engine_get_details()

This allows us to print the daemon-specific properties like VersionFormat when
debugging. The caller can continue to operate on the subclassed FwupdDevice
without changes.
This commit is contained in:
Richard Hughes 2019-04-17 13:36:31 +01:00
parent 099f0f1123
commit 75449d9db1

View File

@ -2437,19 +2437,19 @@ fu_engine_get_silo_from_blob (FuEngine *self, GBytes *blob_cab, GError **error)
return g_steal_pointer (&silo); return g_steal_pointer (&silo);
} }
static FwupdDevice * static FuDevice *
fu_engine_get_result_from_component (FuEngine *self, XbNode *component, GError **error) fu_engine_get_result_from_component (FuEngine *self, XbNode *component, GError **error)
{ {
FwupdReleaseFlags release_flags = FWUPD_RELEASE_FLAG_NONE; FwupdReleaseFlags release_flags = FWUPD_RELEASE_FLAG_NONE;
g_autoptr(FuInstallTask) task = NULL; g_autoptr(FuInstallTask) task = NULL;
g_autoptr(FwupdDevice) dev = NULL; g_autoptr(FuDevice) dev = NULL;
g_autoptr(FwupdRelease) rel = NULL; g_autoptr(FwupdRelease) rel = NULL;
g_autoptr(GError) error_local = NULL; g_autoptr(GError) error_local = NULL;
g_autoptr(GPtrArray) provides = NULL; g_autoptr(GPtrArray) provides = NULL;
g_autoptr(XbNode) description = NULL; g_autoptr(XbNode) description = NULL;
g_autoptr(XbNode) release = NULL; g_autoptr(XbNode) release = NULL;
dev = fwupd_device_new (); dev = fu_device_new ();
provides = xb_node_query (component, provides = xb_node_query (component,
"provides/firmware[@type=$'flashed']", "provides/firmware[@type=$'flashed']",
0, &error_local); 0, &error_local);
@ -2472,15 +2472,15 @@ fu_engine_get_result_from_component (FuEngine *self, XbNode *component, GError *
continue; continue;
device = fu_device_list_get_by_guid (self->device_list, guid, NULL); device = fu_device_list_get_by_guid (self->device_list, guid, NULL);
if (device != NULL) { if (device != NULL) {
fwupd_device_set_name (dev, fu_device_get_name (device)); fu_device_set_name (dev, fu_device_get_name (device));
fwupd_device_set_flags (dev, fu_device_get_flags (device)); fu_device_set_flags (dev, fu_device_get_flags (device));
fwupd_device_set_id (dev, fu_device_get_id (device)); fu_device_set_id (dev, fu_device_get_id (device));
} }
/* add GUID */ /* add GUID */
fwupd_device_add_guid (dev, guid); fu_device_add_guid (dev, guid);
} }
if (fwupd_device_get_guids(dev)->len == 0) { if (fu_device_get_guids(dev)->len == 0) {
g_set_error_literal (error, g_set_error_literal (error,
FWUPD_ERROR, FWUPD_ERROR,
FWUPD_ERROR_INTERNAL, FWUPD_ERROR_INTERNAL,
@ -2529,13 +2529,13 @@ fu_engine_get_result_from_component (FuEngine *self, XbNode *component, GError *
XB_NODE_EXPORT_FLAG_ONLY_CHILDREN, XB_NODE_EXPORT_FLAG_ONLY_CHILDREN,
NULL); NULL);
if (xml != NULL) if (xml != NULL)
fwupd_device_set_description (dev, xml); fu_device_set_description (dev, xml);
} }
rel = fwupd_release_new (); rel = fwupd_release_new ();
fwupd_release_set_flags (rel, release_flags); fwupd_release_set_flags (rel, release_flags);
if (!fu_engine_set_release_from_appstream (self, rel, component, release, error)) if (!fu_engine_set_release_from_appstream (self, dev, rel, component, release, error))
return NULL; return NULL;
fwupd_device_add_release (dev, rel); fu_device_add_release (dev, rel);
return g_steal_pointer (&dev); return g_steal_pointer (&dev);
} }
@ -2549,7 +2549,7 @@ fu_engine_get_result_from_component (FuEngine *self, XbNode *component, GError *
* *
* Note: this will close the fd when done * Note: this will close the fd when done
* *
* Returns: (transfer container) (element-type FwupdDevice): results * Returns: (transfer container) (element-type FuDevice): results
**/ **/
GPtrArray * GPtrArray *
fu_engine_get_details (FuEngine *self, gint fd, GError **error) fu_engine_get_details (FuEngine *self, gint fd, GError **error)
@ -2601,14 +2601,14 @@ fu_engine_get_details (FuEngine *self, gint fd, GError **error)
details = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref); details = g_ptr_array_new_with_free_func ((GDestroyNotify) g_object_unref);
for (guint i = 0; i < components->len; i++) { for (guint i = 0; i < components->len; i++) {
XbNode *component = g_ptr_array_index (components, i); XbNode *component = g_ptr_array_index (components, i);
FwupdDevice *dev; FuDevice *dev;
dev = fu_engine_get_result_from_component (self, component, error); dev = fu_engine_get_result_from_component (self, component, error);
if (dev == NULL) if (dev == NULL)
return NULL; return NULL;
if (remote_id != NULL) { if (remote_id != NULL) {
FwupdRelease *rel = fwupd_device_get_release_default (dev); FwupdRelease *rel = fu_device_get_release_default (dev);
fwupd_release_set_remote_id (rel, remote_id); fwupd_release_set_remote_id (rel, remote_id);
fwupd_device_add_flag (dev, FWUPD_DEVICE_FLAG_SUPPORTED); fu_device_add_flag (dev, FWUPD_DEVICE_FLAG_SUPPORTED);
} }
g_ptr_array_add (details, dev); g_ptr_array_add (details, dev);
} }