]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
ctl: elem_info: rewrite public API to return gboolean according to GNOME convention
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Tue, 31 May 2022 01:41:31 +0000 (10:41 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Tue, 31 May 2022 02:31:59 +0000 (11:31 +0900)
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 <o-takashi@sakamocchi.jp>
src/ctl/alsactl.map
src/ctl/card.c
src/ctl/elem-info.c
src/ctl/elem-info.h

index a1a655f07a7ffd50d5d1c93a658a6eb295e4adbf..a3b62c01ef203c6ced082a0df6cee403b2a555f3 100644 (file)
@@ -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;
index 4ab967df9f7bcfeb9649f669900d69aabaaf6a24..bb3c6f7a0607d37ad3603ad2c5f5d3ea7828099c 100644 (file)
@@ -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);
index baf88814697d06b5bd9c87c06d25cb4028d1dd98..bfe882931edd091cd747dcf3e5faaad87271f38b 100644 (file)
@@ -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)
index 49685dce9f3259a2d6cda38ab9e162fec0994443..a9c2194fc48604cfe8f6442227258cfd7b2391fc 100644 (file)
@@ -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