[libvirt] [libvirt-glib 1/5] gconfig: Fix gvir_config_domain_os_get_boot_devices() API doc

The elements of the returned list are integer enum values, so they cannot be unreffed. --- libvirt-gconfig/libvirt-gconfig-domain-os.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c b/libvirt-gconfig/libvirt-gconfig-domain-os.c index 03c8a85..b922a0e 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-os.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c @@ -267,8 +267,7 @@ static gboolean add_boot_device(xmlNodePtr node, gpointer opaque) * @os: a #GVirConfigDomainOs * * Gets the list of devices attached to @os. The returned list should be - * freed with g_list_free(), after its elements have been unreffed with - * g_object_unref(). + * freed with g_list_free(). * * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer full): * a newly allocated #GList of #GVirConfigDomainOsBootDevice. -- 1.8.4.2

--- libvirt-gconfig/libvirt-gconfig-domain-clock.c | 35 ++++++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-clock.h | 3 +++ libvirt-gconfig/libvirt-gconfig-domain.c | 24 ++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 5 ++++ libvirt-gconfig/tests/test-domain-create.c | 11 +++++++- 6 files changed, 78 insertions(+), 1 deletion(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-clock.c b/libvirt-gconfig/libvirt-gconfig-domain-clock.c index 7235ed8..12516c7 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-clock.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-clock.c @@ -69,6 +69,20 @@ GVirConfigDomainClock *gvir_config_domain_clock_new_from_xml(const gchar *xml, return GVIR_CONFIG_DOMAIN_CLOCK(object); } + +GVirConfigDomainClockOffset +gvir_config_domain_clock_get_offset(GVirConfigDomainClock *klock) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock), + GVIR_CONFIG_DOMAIN_CLOCK_UTC); + + return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(klock), + NULL, "offset", + GVIR_CONFIG_TYPE_DOMAIN_CLOCK_OFFSET, + GVIR_CONFIG_DOMAIN_CLOCK_UTC); +} + + void gvir_config_domain_clock_set_offset(GVirConfigDomainClock *klock, GVirConfigDomainClockOffset offset) { @@ -81,6 +95,16 @@ void gvir_config_domain_clock_set_offset(GVirConfigDomainClock *klock, NULL); } + +const char *gvir_config_domain_clock_get_timezone(GVirConfigDomainClock *klock) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock), NULL); + + return gvir_config_object_get_attribute(GVIR_CONFIG_OBJECT(klock), + NULL, "timezone"); +} + + void gvir_config_domain_clock_set_timezone(GVirConfigDomainClock *klock, const char *tz) { @@ -91,6 +115,16 @@ void gvir_config_domain_clock_set_timezone(GVirConfigDomainClock *klock, "timezone", tz, NULL); } + +int gvir_config_domain_clock_get_variable_offset(GVirConfigDomainClock *klock) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_CLOCK(klock), 0); + + return gvir_config_object_get_attribute_uint64(GVIR_CONFIG_OBJECT(klock), + NULL, "adjustment", 0); +} + + void gvir_config_domain_clock_set_variable_offset(GVirConfigDomainClock *klock, gint seconds) { @@ -102,6 +136,7 @@ void gvir_config_domain_clock_set_variable_offset(GVirConfigDomainClock *klock, NULL); } + void gvir_config_domain_clock_add_timer(GVirConfigDomainClock *klock, GVirConfigDomainTimer *timer) { diff --git a/libvirt-gconfig/libvirt-gconfig-domain-clock.h b/libvirt-gconfig/libvirt-gconfig-domain-clock.h index d58ec03..8a30ffc 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-clock.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-clock.h @@ -70,10 +70,13 @@ GType gvir_config_domain_clock_get_type(void); GVirConfigDomainClock *gvir_config_domain_clock_new(void); GVirConfigDomainClock *gvir_config_domain_clock_new_from_xml(const gchar *xml, GError **error); +GVirConfigDomainClockOffset gvir_config_domain_clock_get_offset(GVirConfigDomainClock *klock); void gvir_config_domain_clock_set_offset(GVirConfigDomainClock *klock, GVirConfigDomainClockOffset offset); +const char *gvir_config_domain_clock_get_timezone(GVirConfigDomainClock *klock); void gvir_config_domain_clock_set_timezone(GVirConfigDomainClock *klock, const char *tz); +gint gvir_config_domain_clock_get_variable_offset(GVirConfigDomainClock *klock); void gvir_config_domain_clock_set_variable_offset(GVirConfigDomainClock *klock, gint seconds); void gvir_config_domain_clock_add_timer(GVirConfigDomainClock *klock, diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c index 6cd2f86..702669e 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.c +++ b/libvirt-gconfig/libvirt-gconfig-domain.c @@ -543,6 +543,30 @@ void gvir_config_domain_set_features(GVirConfigDomain *domain, g_object_notify(G_OBJECT(domain), "features"); } + +/** + * gvir_config_domain_get_clock: + * @domain: a #GVirConfigDomain + * + * Gets the clock configuration of @domain + * + * Returns: (transfer full): A #GVirConfigDomainClock. The returned + * object should be unreffed with g_object_unref() when no longer needed. + */ +GVirConfigDomainClock *gvir_config_domain_get_clock(GVirConfigDomain *domain) +{ + GVirConfigObject *object; + + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN(domain), NULL); + + object = gvir_config_object_get_child_with_type(GVIR_CONFIG_OBJECT(domain), + "clock", + GVIR_CONFIG_TYPE_DOMAIN_CLOCK); + + return GVIR_CONFIG_DOMAIN_CLOCK(object); +} + + /** * gvir_config_domain_set_clock: * @domain: a #GVirConfigDomain diff --git a/libvirt-gconfig/libvirt-gconfig-domain.h b/libvirt-gconfig/libvirt-gconfig-domain.h index 6e85374..ed9be6b 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.h +++ b/libvirt-gconfig/libvirt-gconfig-domain.h @@ -119,6 +119,7 @@ void gvir_config_domain_set_vcpus(GVirConfigDomain *domain, GStrv gvir_config_domain_get_features(GVirConfigDomain *domain); void gvir_config_domain_set_features(GVirConfigDomain *domain, const GStrv features); +GVirConfigDomainClock *gvir_config_domain_get_clock(GVirConfigDomain *domain); void gvir_config_domain_set_clock(GVirConfigDomain *domain, GVirConfigDomainClock *klock); GVirConfigDomainOs *gvir_config_domain_get_os(GVirConfigDomain *domain); diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 0332d33..46566c1 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -614,6 +614,10 @@ LIBVIRT_GCONFIG_0.1.7 { LIBVIRT_GCONFIG_0.1.8 { global: + gvir_config_domain_clock_get_offset; + gvir_config_domain_clock_get_timezone; + gvir_config_domain_clock_get_variable_offset; + gvir_config_domain_disk_driver_discard_get_type; gvir_config_domain_disk_driver_error_policy_get_type; gvir_config_domain_disk_driver_get_cache; @@ -638,6 +642,7 @@ global: gvir_config_domain_disk_get_driver; gvir_config_domain_disk_set_driver; + gvir_config_domain_get_clock; gvir_config_domain_get_uuid; gvir_config_domain_graphics_desktop_get_display; diff --git a/libvirt-gconfig/tests/test-domain-create.c b/libvirt-gconfig/tests/test-domain-create.c index 7ff008e..eb4b945 100644 --- a/libvirt-gconfig/tests/test-domain-create.c +++ b/libvirt-gconfig/tests/test-domain-create.c @@ -141,7 +141,10 @@ int main(int argc, char **argv) GVirConfigDomainTimerHpet *hpet; klock = gvir_config_domain_clock_new(); - gvir_config_domain_clock_set_offset(klock, GVIR_CONFIG_DOMAIN_CLOCK_UTC); + gvir_config_domain_clock_set_offset(klock, GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE); + gvir_config_domain_clock_set_timezone(klock, "CEST"); + g_assert(gvir_config_domain_clock_get_offset(klock) == GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE); + g_str_const_check(gvir_config_domain_clock_get_timezone(klock), "CEST"); pit = gvir_config_domain_timer_pit_new(); gvir_config_domain_timer_set_tick_policy(GVIR_CONFIG_DOMAIN_TIMER(pit), @@ -168,6 +171,12 @@ int main(int argc, char **argv) gvir_config_domain_set_clock(domain, klock); g_object_unref(G_OBJECT(klock)); + klock = gvir_config_domain_get_clock(domain); + g_assert(klock != NULL); + g_assert(gvir_config_domain_clock_get_offset(klock) == GVIR_CONFIG_DOMAIN_CLOCK_TIMEZONE); + g_str_const_check(gvir_config_domain_clock_get_timezone(klock), "CEST"); + g_object_unref(G_OBJECT(klock)); + /* os node */ GVirConfigDomainOs *os; GList *devices = NULL; -- 1.8.4.2

On Tue, Jan 21, 2014 at 11:42:55AM +0100, Christophe Fergeau wrote:
--- libvirt-gconfig/libvirt-gconfig-domain-clock.c | 35 ++++++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-clock.h | 3 +++ libvirt-gconfig/libvirt-gconfig-domain.c | 24 ++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain.h | 1 + libvirt-gconfig/libvirt-gconfig.sym | 5 ++++ libvirt-gconfig/tests/test-domain-create.c | 11 +++++++- 6 files changed, 78 insertions(+), 1 deletion(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

--- libvirt-gconfig/libvirt-gconfig-domain-input.c | 24 ++++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-input.h | 2 ++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ 3 files changed, 29 insertions(+) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-input.c b/libvirt-gconfig/libvirt-gconfig-domain-input.c index 9dd4717..e87c61c 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-input.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-input.c @@ -69,6 +69,18 @@ GVirConfigDomainInput *gvir_config_domain_input_new_from_xml(const gchar *xml, return GVIR_CONFIG_DOMAIN_INPUT(object); } + +GVirConfigDomainInputDeviceType gvir_config_domain_input_get_device_type(GVirConfigDomainInput *input) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INPUT(input), + GVIR_CONFIG_DOMAIN_INPUT_DEVICE_MOUSE); + return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(input), + NULL, "type", + GVIR_CONFIG_TYPE_DOMAIN_INPUT_DEVICE_TYPE, + GVIR_CONFIG_DOMAIN_INPUT_DEVICE_MOUSE); +} + + void gvir_config_domain_input_set_device_type(GVirConfigDomainInput *input, GVirConfigDomainInputDeviceType type) { @@ -79,6 +91,18 @@ void gvir_config_domain_input_set_device_type(GVirConfigDomainInput *input, type, NULL); } + +GVirConfigDomainInputBus gvir_config_domain_input_get_bus(GVirConfigDomainInput *input) +{ + g_return_val_if_fail(GVIR_CONFIG_IS_DOMAIN_INPUT(input), + GVIR_CONFIG_DOMAIN_INPUT_BUS_PS2); + return gvir_config_object_get_attribute_genum(GVIR_CONFIG_OBJECT(input), + NULL, "bus", + GVIR_CONFIG_TYPE_DOMAIN_INPUT_BUS, + GVIR_CONFIG_DOMAIN_INPUT_BUS_PS2); +} + + void gvir_config_domain_input_set_bus(GVirConfigDomainInput *input, GVirConfigDomainInputBus bus) { diff --git a/libvirt-gconfig/libvirt-gconfig-domain-input.h b/libvirt-gconfig/libvirt-gconfig-domain-input.h index d67309e..252b6ca 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-input.h +++ b/libvirt-gconfig/libvirt-gconfig-domain-input.h @@ -72,8 +72,10 @@ GType gvir_config_domain_input_get_type(void); GVirConfigDomainInput *gvir_config_domain_input_new(void); GVirConfigDomainInput *gvir_config_domain_input_new_from_xml(const gchar *xml, GError **error); +GVirConfigDomainInputDeviceType gvir_config_domain_input_get_device_type(GVirConfigDomainInput *input); void gvir_config_domain_input_set_device_type(GVirConfigDomainInput *input, GVirConfigDomainInputDeviceType type); +GVirConfigDomainInputBus gvir_config_domain_input_get_bus(GVirConfigDomainInput *input); void gvir_config_domain_input_set_bus(GVirConfigDomainInput *input, GVirConfigDomainInputBus bus); diff --git a/libvirt-gconfig/libvirt-gconfig.sym b/libvirt-gconfig/libvirt-gconfig.sym index 46566c1..ead313b 100644 --- a/libvirt-gconfig/libvirt-gconfig.sym +++ b/libvirt-gconfig/libvirt-gconfig.sym @@ -653,6 +653,9 @@ global: gvir_config_domain_graphics_rdp_set_multi_user; gvir_config_domain_graphics_rdp_set_replace_user; + gvir_config_domain_input_get_bus; + gvir_config_domain_input_get_device_type; + gvir_config_domain_interface_filterref_add_parameter; gvir_config_domain_interface_filterref_get_name; gvir_config_domain_interface_filterref_get_parameters; -- 1.8.4.2

On Tue, Jan 21, 2014 at 11:42:56AM +0100, Christophe Fergeau wrote:
--- libvirt-gconfig/libvirt-gconfig-domain-input.c | 24 ++++++++++++++++++++++++ libvirt-gconfig/libvirt-gconfig-domain-input.h | 2 ++ libvirt-gconfig/libvirt-gconfig.sym | 3 +++ 3 files changed, 29 insertions(+)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Calling gvir_config_capabilities_cpu_set_topology with a NULL topology would not remove the topology as expected as NULL would be rejected by this method preconditions. --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c index 9245da9..f4753ff 100644 --- a/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c +++ b/libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c @@ -179,7 +179,7 @@ gvir_config_capabilities_cpu_set_topology(GVirConfigCapabilitiesCpu *cpu, GVirConfigCapabilitiesCpuTopology *topology) { g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU(cpu)); - g_return_if_fail(GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology)); + g_return_if_fail(topology == NULL || GVIR_CONFIG_IS_CAPABILITIES_CPU_TOPOLOGY(topology)); gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(cpu), "topology", -- 1.8.4.2

On Tue, Jan 21, 2014 at 11:42:57AM +0100, Christophe Fergeau wrote:
Calling gvir_config_capabilities_cpu_set_topology with a NULL topology would not remove the topology as expected as NULL would be rejected by this method preconditions. --- libvirt-gconfig/libvirt-gconfig-capabilities-cpu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

A wrong precondition in gvir_config_domain_set_cpu() would reject NULL GVirConfigDomainCpus instead of accepting them. --- libvirt-gconfig/libvirt-gconfig-domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c index 702669e..064f307 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.c +++ b/libvirt-gconfig/libvirt-gconfig-domain.c @@ -857,7 +857,7 @@ void gvir_config_domain_set_cpu(GVirConfigDomain *domain, GVirConfigDomainCpu *cpu) { g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); - g_return_if_fail(cpu != NULL || GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + g_return_if_fail(cpu == NULL || GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(domain), "cpu", -- 1.8.4.2

On Tue, Jan 21, 2014 at 11:42:58AM +0100, Christophe Fergeau wrote:
A wrong precondition in gvir_config_domain_set_cpu() would reject NULL GVirConfigDomainCpus instead of accepting them. --- libvirt-gconfig/libvirt-gconfig-domain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain.c b/libvirt-gconfig/libvirt-gconfig-domain.c index 702669e..064f307 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain.c +++ b/libvirt-gconfig/libvirt-gconfig-domain.c @@ -857,7 +857,7 @@ void gvir_config_domain_set_cpu(GVirConfigDomain *domain, GVirConfigDomainCpu *cpu) { g_return_if_fail(GVIR_CONFIG_IS_DOMAIN(domain)); - g_return_if_fail(cpu != NULL || GVIR_CONFIG_IS_DOMAIN_CPU(cpu)); + g_return_if_fail(cpu == NULL || GVIR_CONFIG_IS_DOMAIN_CPU(cpu));
gvir_config_object_attach_replace(GVIR_CONFIG_OBJECT(domain), "cpu",
ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

Ping for series ? On Tue, Jan 21, 2014 at 11:42:54AM +0100, Christophe Fergeau wrote:
The elements of the returned list are integer enum values, so they cannot be unreffed. --- libvirt-gconfig/libvirt-gconfig-domain-os.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c b/libvirt-gconfig/libvirt-gconfig-domain-os.c index 03c8a85..b922a0e 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-os.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c @@ -267,8 +267,7 @@ static gboolean add_boot_device(xmlNodePtr node, gpointer opaque) * @os: a #GVirConfigDomainOs * * Gets the list of devices attached to @os. The returned list should be - * freed with g_list_free(), after its elements have been unreffed with - * g_object_unref(). + * freed with g_list_free(). * * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer full): * a newly allocated #GList of #GVirConfigDomainOsBootDevice. -- 1.8.4.2
-- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list

On Tue, Jan 21, 2014 at 11:42:54AM +0100, Christophe Fergeau wrote:
The elements of the returned list are integer enum values, so they cannot be unreffed. --- libvirt-gconfig/libvirt-gconfig-domain-os.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c b/libvirt-gconfig/libvirt-gconfig-domain-os.c index 03c8a85..b922a0e 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-os.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c @@ -267,8 +267,7 @@ static gboolean add_boot_device(xmlNodePtr node, gpointer opaque) * @os: a #GVirConfigDomainOs * * Gets the list of devices attached to @os. The returned list should be - * freed with g_list_free(), after its elements have been unreffed with - * g_object_unref(). + * freed with g_list_free(). * * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer full): * a newly allocated #GList of #GVirConfigDomainOsBootDevice.
Do you know if GIR cares about this distinction ? ie should we be changing 'transfer full' to 'transfer container', or is it assumed that these two annotations are identical when the element type is a scalar (non-object) type. I'm guessing the distinction doesn't matter, so ACK unless you know something to the contrary. Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|

On Tue, Feb 04, 2014 at 12:03:21PM +0000, Daniel P. Berrange wrote:
On Tue, Jan 21, 2014 at 11:42:54AM +0100, Christophe Fergeau wrote:
The elements of the returned list are integer enum values, so they cannot be unreffed. --- libvirt-gconfig/libvirt-gconfig-domain-os.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c b/libvirt-gconfig/libvirt-gconfig-domain-os.c index 03c8a85..b922a0e 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-os.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c @@ -267,8 +267,7 @@ static gboolean add_boot_device(xmlNodePtr node, gpointer opaque) * @os: a #GVirConfigDomainOs * * Gets the list of devices attached to @os. The returned list should be - * freed with g_list_free(), after its elements have been unreffed with - * g_object_unref(). + * freed with g_list_free(). * * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer full): * a newly allocated #GList of #GVirConfigDomainOsBootDevice.
Do you know if GIR cares about this distinction ? ie should we be changing 'transfer full' to 'transfer container', or is it assumed that these two annotations are identical when the element type is a scalar (non-object) type. I'm guessing the distinction doesn't matter, so ACK unless you know something to the contrary.
Actually, I don't know, though I'd indeed expect both to behave the same on scalar types. I tried asking on #introspection if there's a difference. Christophe

(transfer container) is more correct than (transfer full) for GList of scalar values, it's not clear whether it's an issue or not, but better be safe than sorry. --- I'll push this patch too in order to be fully sure that this will not be an issue, someone on #introspection told me: teuf: if you use transfer full, I think the bindings will assume you're using a list of allocated integers, and free the glist contents. I don't know the rules for pointer types, though, so it may be the case that transfer full/container are the same in this case Christophe libvirt-gconfig/libvirt-gconfig-domain-os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-os.c b/libvirt-gconfig/libvirt-gconfig-domain-os.c index b922a0e..429f75a 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-os.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-os.c @@ -269,7 +269,7 @@ static gboolean add_boot_device(xmlNodePtr node, gpointer opaque) * Gets the list of devices attached to @os. The returned list should be * freed with g_list_free(). * - * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer full): + * Returns: (element-type LibvirtGConfig.DomainOsBootDevice) (transfer container): * a newly allocated #GList of #GVirConfigDomainOsBootDevice. */ GList *gvir_config_domain_os_get_boot_devices(GVirConfigDomainOs *os) -- 1.8.5.3
participants (2)
-
Christophe Fergeau
-
Daniel P. Berrange