From: Takashi Sakamoto Date: Tue, 31 May 2022 01:41:31 +0000 (+0900) Subject: ctl: elem_info: rewrite public API to return gboolean according to GNOME convention X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=5fd6e21ca80ac3b398ec3964966a4d3dd8417c55;p=alsa-gobject.git ctl: elem_info: rewrite public API to return gboolean according to GNOME convention In GNOME convention, the throw function to report error at GError argument should return gboolean value to report the overall operation finishes successfully or not. This commit rewrite such public APIs with loss of backward compatibility. Signed-off-by: Takashi Sakamoto --- diff --git a/src/ctl/alsactl.map b/src/ctl/alsactl.map index a1a655f..a3b62c0 100644 --- a/src/ctl/alsactl.map +++ b/src/ctl/alsactl.map @@ -24,12 +24,6 @@ ALSA_GOBJECT_0_0_0 { "alsactl_elem_info_get_type"; "alsactl_elem_info_new"; - "alsactl_elem_info_get_int_data"; - "alsactl_elem_info_set_int_data"; - "alsactl_elem_info_get_int64_data"; - "alsactl_elem_info_set_int64_data"; - "alsactl_elem_info_get_enum_data"; - "alsactl_elem_info_set_enum_data"; "alsactl_elem_value_get_type"; "alsactl_elem_value_new"; @@ -80,4 +74,11 @@ ALSA_GOBJECT_0_3_0 { "alsactl_card_write_elem_value"; "alsactl_card_read_elem_value"; "alsactl_card_create_source"; + + "alsactl_elem_info_get_int_data"; + "alsactl_elem_info_set_int_data"; + "alsactl_elem_info_get_int64_data"; + "alsactl_elem_info_set_int64_data"; + "alsactl_elem_info_get_enum_data"; + "alsactl_elem_info_set_enum_data"; } ALSA_GOBJECT_0_2_0; diff --git a/src/ctl/card.c b/src/ctl/card.c index 4ab967d..bb3c6f7 100644 --- a/src/ctl/card.c +++ b/src/ctl/card.c @@ -548,13 +548,14 @@ gboolean alsactl_card_get_elem_info(ALSACtlCard *self, const ALSACtlElemId *elem case SNDRV_CTL_ELEM_TYPE_ENUMERATED: { gchar **labels; + gboolean result; if (!parse_enum_names(priv, info, &labels, error)) return FALSE; - alsactl_elem_info_set_enum_data(*elem_info, (const gchar **)labels, error); + result = alsactl_elem_info_set_enum_data(*elem_info, (const gchar **)labels, error); g_strfreev(labels); - if (*error != NULL) { + if (!result) { g_object_unref(*elem_info); return FALSE; } @@ -796,8 +797,7 @@ static gboolean add_or_replace_elems(int fd, const ALSACtlElemId *elem_id, guint { const gchar **labels; - alsactl_elem_info_get_enum_data(elem_info, &labels, error); - if (*error != NULL) + if (!alsactl_elem_info_get_enum_data(elem_info, &labels, error)) return FALSE; prepare_enum_names(info, labels); diff --git a/src/ctl/elem-info.c b/src/ctl/elem-info.c index baf8881..bfe8829 100644 --- a/src/ctl/elem-info.c +++ b/src/ctl/elem-info.c @@ -189,24 +189,28 @@ ALSACtlElemInfo *alsactl_elem_info_new(ALSACtlElemType elem_type, GError **error * Refer to the array with elements for the data of integer element; minimum value, maximum value, * and value step in the order. The call of function is successful as long as the information is * for integer type. + * + * Returns: %TRUE when the overall operation finishes successfully, else %FALSE. */ -void alsactl_elem_info_get_int_data(ALSACtlElemInfo *self, const gint32 *data[3], GError **error) +gboolean alsactl_elem_info_get_int_data(ALSACtlElemInfo *self, const gint32 *data[3], GError **error) { ALSACtlElemInfoPrivate *priv; - g_return_if_fail(ALSACTL_IS_ELEM_INFO(self)); + g_return_val_if_fail(ALSACTL_IS_ELEM_INFO(self), FALSE); priv = alsactl_elem_info_get_instance_private(self); - g_return_if_fail(data != NULL); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(data != NULL, FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); - g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER); + g_return_val_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER, FALSE); priv->int_data.min = (gint32)priv->info.value.integer.min; priv->int_data.max = (gint32)priv->info.value.integer.max; priv->int_data.step = (gint32)priv->info.value.integer.step; *data = (const gint32 *)&priv->int_data; + + return TRUE; } /** @@ -219,22 +223,26 @@ void alsactl_elem_info_get_int_data(ALSACtlElemInfo *self, const gint32 *data[3] * Get the array with elements for the data of integer element; minimum value, maximum value, and * value step in the order. The call of function is successful as long as the information is for * integer type. + * + * Returns: %TRUE when the overall operation finishes successfully, else %FALSE. */ -void alsactl_elem_info_set_int_data(ALSACtlElemInfo *self, const gint32 data[3], GError **error) +gboolean alsactl_elem_info_set_int_data(ALSACtlElemInfo *self, const gint32 data[3], GError **error) { ALSACtlElemInfoPrivate *priv; - g_return_if_fail(ALSACTL_IS_ELEM_INFO(self)); + g_return_val_if_fail(ALSACTL_IS_ELEM_INFO(self), FALSE); priv = alsactl_elem_info_get_instance_private(self); - g_return_if_fail(data != NULL); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(data != NULL, FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); - g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER); + g_return_val_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER, FALSE); priv->info.value.integer.min = (long)data[0]; priv->info.value.integer.max = (long)data[1]; priv->info.value.integer.step = (long)data[2]; + + return TRUE; } /** @@ -247,24 +255,28 @@ void alsactl_elem_info_set_int_data(ALSACtlElemInfo *self, const gint32 data[3], * Refer to the array with elements for the data of integer64 element; minimum value, maximum * value, and value step in the order. The call of function is successful as long as the * information is for integer64 type. + * + * Returns: %TRUE when the overall operation finishes successfully, else %FALSE. */ -void alsactl_elem_info_get_int64_data(ALSACtlElemInfo *self, const gint64 *data[3], GError **error) +gboolean alsactl_elem_info_get_int64_data(ALSACtlElemInfo *self, const gint64 *data[3], GError **error) { ALSACtlElemInfoPrivate *priv; - g_return_if_fail(ALSACTL_IS_ELEM_INFO(self)); + g_return_val_if_fail(ALSACTL_IS_ELEM_INFO(self), FALSE); priv = alsactl_elem_info_get_instance_private(self); - g_return_if_fail(data != NULL); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(data != NULL, FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); - g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER64); + g_return_val_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER64, FALSE); priv->int_data.min = (gint64)priv->info.value.integer.min; priv->int_data.max = (gint64)priv->info.value.integer.max; priv->int_data.step = (gint64)priv->info.value.integer.step; *data = (const gint64 *)&priv->info.value.integer64; + + return TRUE; } /** @@ -277,22 +289,26 @@ void alsactl_elem_info_get_int64_data(ALSACtlElemInfo *self, const gint64 *data[ * Get the array with elements for the data of integer64 element; minimum value, maximum value, and * value step in the order. The call of function is successful as long as the information is for * integer64 type. + * + * Returns: %TRUE when the overall operation finishes successfully, else %FALSE. */ -void alsactl_elem_info_set_int64_data(ALSACtlElemInfo *self, const gint64 data[3], GError **error) +gboolean alsactl_elem_info_set_int64_data(ALSACtlElemInfo *self, const gint64 data[3], GError **error) { ALSACtlElemInfoPrivate *priv; - g_return_if_fail(ALSACTL_IS_ELEM_INFO(self)); + g_return_val_if_fail(ALSACTL_IS_ELEM_INFO(self), FALSE); priv = alsactl_elem_info_get_instance_private(self); - g_return_if_fail(data != NULL); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(data != NULL, FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); - g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER64); + g_return_val_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_INTEGER64, FALSE); priv->info.value.integer.min = (long long)data[0]; priv->info.value.integer.max = (long long)data[1]; priv->info.value.integer.step = (long long)data[2]; + + return TRUE; } /** @@ -304,20 +320,24 @@ void alsactl_elem_info_set_int64_data(ALSACtlElemInfo *self, const gint64 data[3 * * Refer to the array with elements for the label entries of enumerated element in internal storage. * The call of function is successful as long as the information is for enumerated type. + * + * Returns: %TRUE when the overall operation finishes successfully, else %FALSE. */ -void alsactl_elem_info_get_enum_data(ALSACtlElemInfo *self, const gchar ***data, GError **error) +gboolean alsactl_elem_info_get_enum_data(ALSACtlElemInfo *self, const gchar ***data, GError **error) { ALSACtlElemInfoPrivate *priv; - g_return_if_fail(ALSACTL_IS_ELEM_INFO(self)); + g_return_val_if_fail(ALSACTL_IS_ELEM_INFO(self), FALSE); priv = alsactl_elem_info_get_instance_private(self); - g_return_if_fail(data != NULL); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(data != NULL, FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); - g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED); + g_return_val_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED, FALSE); *data = (const gchar **)priv->enum_data; + + return TRUE; } /** @@ -329,22 +349,26 @@ void alsactl_elem_info_get_enum_data(ALSACtlElemInfo *self, const gchar ***data, * * Copy the array with elements for the label entries of enumerated element into internal storage. * The call of function is successful as long as the information is for enumerated type. + * + * Returns: %TRUE when the overall operation finishes successfully, else %FALSE. */ -void alsactl_elem_info_set_enum_data(ALSACtlElemInfo *self, const gchar **data, GError **error) +gboolean alsactl_elem_info_set_enum_data(ALSACtlElemInfo *self, const gchar **data, GError **error) { ALSACtlElemInfoPrivate *priv; - g_return_if_fail(ALSACTL_IS_ELEM_INFO(self)); + g_return_val_if_fail(ALSACTL_IS_ELEM_INFO(self), FALSE); priv = alsactl_elem_info_get_instance_private(self); - g_return_if_fail(data != NULL); - g_return_if_fail(error == NULL || *error == NULL); + g_return_val_if_fail(data != NULL, FALSE); + g_return_val_if_fail(error == NULL || *error == NULL, FALSE); - g_return_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED); + g_return_val_if_fail(priv->info.type == SNDRV_CTL_ELEM_TYPE_ENUMERATED, FALSE); g_strfreev(priv->enum_data); priv->enum_data = g_strdupv((gchar **)data); + + return TRUE; } void ctl_elem_info_refer_private(ALSACtlElemInfo *self, struct snd_ctl_elem_info **info) diff --git a/src/ctl/elem-info.h b/src/ctl/elem-info.h index 49685dc..a9c2194 100644 --- a/src/ctl/elem-info.h +++ b/src/ctl/elem-info.h @@ -16,14 +16,14 @@ struct _ALSACtlElemInfoClass { ALSACtlElemInfo *alsactl_elem_info_new(ALSACtlElemType elem_type, GError **error); -void alsactl_elem_info_get_int_data(ALSACtlElemInfo *self, const gint32 *data[3], GError **error); -void alsactl_elem_info_set_int_data(ALSACtlElemInfo *self, const gint32 data[3], GError **error); +gboolean alsactl_elem_info_get_int_data(ALSACtlElemInfo *self, const gint32 *data[3], GError **error); +gboolean alsactl_elem_info_set_int_data(ALSACtlElemInfo *self, const gint32 data[3], GError **error); -void alsactl_elem_info_get_int64_data(ALSACtlElemInfo *self, const gint64 *data[3], GError **error); -void alsactl_elem_info_set_int64_data(ALSACtlElemInfo *self, const gint64 data[3], GError **error); +gboolean alsactl_elem_info_get_int64_data(ALSACtlElemInfo *self, const gint64 *data[3], GError **error); +gboolean alsactl_elem_info_set_int64_data(ALSACtlElemInfo *self, const gint64 data[3], GError **error); -void alsactl_elem_info_get_enum_data(ALSACtlElemInfo *self, const gchar ***data, GError **error); -void alsactl_elem_info_set_enum_data(ALSACtlElemInfo *self, const gchar **data, GError **error); +gboolean alsactl_elem_info_get_enum_data(ALSACtlElemInfo *self, const gchar ***data, GError **error); +gboolean alsactl_elem_info_set_enum_data(ALSACtlElemInfo *self, const gchar **data, GError **error); G_END_DECLS