]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
rawmidi: query: 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>
samples/rawmidi
src/rawmidi/alsarawmidi.map
src/rawmidi/privates.h
src/rawmidi/query.c
src/rawmidi/query.h
src/rawmidi/stream-pair.c

index 8b5da227d296f3c6cac6d63ba155639fd5bb7051..b4c669c947060f6f4e80a284583b271c9b3aaf3c 100755 (executable)
@@ -13,10 +13,11 @@ from signal import SIGINT
 # is available in the same subdevice ID.
 _, card_id_list = ALSACtl.get_card_id_list()
 for card_id in card_id_list:
-    for device_id in ALSARawmidi.get_device_id_list(card_id):
-        outputs = ALSARawmidi.get_subdevice_id_list(card_id, device_id,
+    _, device_id_list = ALSARawmidi.get_device_id_list(card_id)
+    for device_id in device_id_list:
+        _, outputs = ALSARawmidi.get_subdevice_id_list(card_id, device_id,
                                           ALSARawmidi.StreamDirection.OUTPUT)
-        inputs = ALSARawmidi.get_subdevice_id_list(card_id, device_id,
+        _, inputs = ALSARawmidi.get_subdevice_id_list(card_id, device_id,
                                           ALSARawmidi.StreamDirection.OUTPUT)
         for subdevice_id in outputs:
             if subdevice_id in inputs:
index b1045ee44621b3f3d3360f03fdacc84e3e8a30ed..67f77c60c777bac94726293ad9bea97887bc4e78 100644 (file)
@@ -3,12 +3,6 @@ ALSA_GOBJECT_0_0_0 {
     "alsarawmidi_stream_direction_get_type";
     "alsarawmidi_stream_pair_info_flag_get_type";
 
-    "alsarawmidi_get_device_id_list";
-    "alsarawmidi_get_rawmidi_sysname";
-    "alsarawmidi_get_rawmidi_devnode";
-    "alsarawmidi_get_subdevice_id_list";
-    "alsarawmidi_get_substream_info";
-
     "alsarawmidi_substream_info_get_type";
 
     "alsarawmidi_stream_pair_get_type";
@@ -34,6 +28,16 @@ ALSA_GOBJECT_0_0_0 {
 };
 
 ALSA_GOBJECT_0_2_0 {
+  global:
     "alsarawmidi_stream_pair_error_get_type";
     "alsarawmidi_stream_pair_error_quark";
 } ALSA_GOBJECT_0_0_0;
+
+ALSA_GOBJECT_0_3_0 {
+  global:
+    "alsarawmidi_get_device_id_list";
+    "alsarawmidi_get_rawmidi_sysname";
+    "alsarawmidi_get_rawmidi_devnode";
+    "alsarawmidi_get_subdevice_id_list";
+    "alsarawmidi_get_substream_info";
+} ALSA_GOBJECT_0_2_0;
index 74367c2534086728e56b00c81ca22fe18e1d2894..ebd9e403f36b4922fd437b4c7aec3cac545d513d 100644 (file)
@@ -9,7 +9,7 @@ G_BEGIN_DECLS
 void rawmidi_substream_info_refer_private(ALSARawmidiSubstreamInfo *self,
                                           struct snd_rawmidi_info **info);
 
-void rawmidi_select_subdevice(guint card_id, guint subdevice_id, int *ctl_fd, GError **error);
+gboolean rawmidi_select_subdevice(guint card_id, guint subdevice_id, int *ctl_fd, GError **error);
 
 void rawmidi_substream_params_refer_private(ALSARawmidiSubstreamParams *self,
                                             struct snd_rawmidi_params **params);
index b9b275f8425dc78713dca05245bc3ebc69fc3fa2..6be6acd9fc12f85d5eb52c7471e4c21af453574b 100644 (file)
  * Get the list of numeric identifier for available rawmidi devices of sound card.
  *
  * Nodes under sound subsystem in sysfs are used to gather the information.
+ *
+ * Returns: %TRUE when the overall operation finishes successfully, else %FALSE.
  */
-void alsarawmidi_get_device_id_list(guint card_id, guint **entries,
-                                    gsize *entry_count, GError **error)
+gboolean alsarawmidi_get_device_id_list(guint card_id, guint **entries, gsize *entry_count,
+                                        GError **error)
 {
     int err;
 
-    g_return_if_fail(entries != NULL);
-    g_return_if_fail(entry_count != NULL);
-    g_return_if_fail(error == NULL || *error == NULL);
+    g_return_val_if_fail(entries != NULL, FALSE);
+    g_return_val_if_fail(entry_count != NULL, FALSE);
+    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
 
     err = generate_rawmidi_sysnum_list(entries, entry_count, card_id);
-    if (err < 0)
+    if (err < 0) {
         generate_file_error(error, -err, "Fail to generate list of rawmidi sysnum");
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 /**
@@ -40,18 +46,24 @@ void alsarawmidi_get_device_id_list(guint card_id, guint **entries,
  * Allocate sysname for rawmidi device and return it when it exists.
  *
  * Nodes under sound subsystem in sysfs are used to gather the information.
+ *
+ * Returns: %TRUE when the overall operation finishes successfully, else %FALSE.
  */
-void alsarawmidi_get_rawmidi_sysname(guint card_id, guint device_id,
-                                     char **sysname, GError **error)
+gboolean alsarawmidi_get_rawmidi_sysname(guint card_id, guint device_id, char **sysname,
+                                         GError **error)
 {
     int err;
 
-    g_return_if_fail(sysname != NULL);
-    g_return_if_fail(error == NULL || *error == NULL);
+    g_return_val_if_fail(sysname != NULL, FALSE);
+    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
 
     err = lookup_and_allocate_rawmidi_sysname(sysname, card_id, device_id);
-    if (err < 0)
+    if (err < 0) {
         generate_file_error(error, -err, "Fail to generate rawmidi sysname");
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 /**
@@ -64,18 +76,24 @@ void alsarawmidi_get_rawmidi_sysname(guint card_id, guint device_id,
  * Allocate devnode string for rawmidi device and return it when exists.
  *
  * Nodes under sound subsystem in sysfs are used to gather the information.
+ *
+ * Returns: %TRUE when the overall operation finishes successfully, else %FALSE.
  */
-void alsarawmidi_get_rawmidi_devnode(guint card_id, guint device_id,
-                                     char **devnode, GError **error)
+gboolean alsarawmidi_get_rawmidi_devnode(guint card_id, guint device_id, char **devnode,
+                                         GError **error)
 {
     int err;
 
-    g_return_if_fail(devnode != NULL);
-    g_return_if_fail(error == NULL || *error == NULL);
+    g_return_val_if_fail(devnode != NULL, FALSE);
+    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
 
     err = lookup_and_allocate_rawmidi_devname(devnode, card_id, device_id);
-    if (err < 0)
+    if (err < 0) {
         generate_file_error(error, -err, "Fail to generate rawmidi devname");
+        return FALSE;
+    }
+
+    return TRUE;
 }
 
 /**
@@ -92,11 +110,13 @@ void alsarawmidi_get_rawmidi_devnode(guint card_id, guint device_id,
  *
  * The call of function executes `open(2)`, `close(2)`, and `ioctl(2)` system call with
  * `SNDRV_CTL_IOCTL_RAWMIDI_INFO` command for ALSA control character device.
+ *
+ * Returns: %TRUE when the overall operation finishes successfully, else %FALSE.
  */
-void alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
-                                       ALSARawmidiStreamDirection direction,
-                                       guint **entries, gsize *entry_count,
-                                       GError **error)
+gboolean alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
+                                           ALSARawmidiStreamDirection direction,
+                                           guint **entries, gsize *entry_count,
+                                           GError **error)
 {
     struct snd_rawmidi_info info = {
         .card = card_id,
@@ -107,14 +127,14 @@ void alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
     int i;
     int err;
 
-    g_return_if_fail(entries != NULL);
-    g_return_if_fail(entry_count != NULL);
-    g_return_if_fail(error == NULL || *error == NULL);
+    g_return_val_if_fail(entries != NULL, FALSE);
+    g_return_val_if_fail(entry_count != NULL, FALSE);
+    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
 
     err = request_ctl_ioctl(card_id, SNDRV_CTL_IOCTL_RAWMIDI_INFO, &info);
     if (err < 0) {
         generate_file_error(error, -err, "RAWMIDI_INFO");
-        return;
+        return FALSE;
     }
 
     *entries = g_malloc0_n(info.subdevices_count, sizeof(guint));
@@ -122,6 +142,8 @@ void alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
     for (i = 0; i < info.subdevices_count; ++i)
         (*entries)[i] = i;
     *entry_count = info.subdevices_count;
+
+    return TRUE;
 }
 
 /**
@@ -138,18 +160,19 @@ void alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
  *
  * The call of function executes `open(2)`, `close(2)`, and `ioctl(2)` system call with
  * `SNDRV_CTL_IOCTL_RAWMIDI_INFO` command for ALSA control character device.
+ *
+ * Returns: %TRUE when the overall operation finishes successfully, else %FALSE.
  */
-void alsarawmidi_get_substream_info(guint card_id, guint device_id,
-                                    ALSARawmidiStreamDirection direction,
-                                    guint subdevice_id,
-                                    ALSARawmidiSubstreamInfo **substream_info,
-                                    GError **error)
+gboolean alsarawmidi_get_substream_info(guint card_id, guint device_id,
+                                        ALSARawmidiStreamDirection direction,
+                                        guint subdevice_id,
+                                        ALSARawmidiSubstreamInfo **substream_info, GError **error)
 {
     struct snd_rawmidi_info *info;
     int err;
 
-    g_return_if_fail(substream_info != NULL);
-    g_return_if_fail(error == NULL || *error == NULL);
+    g_return_val_if_fail(substream_info != NULL, FALSE);
+    g_return_val_if_fail(error == NULL || *error == NULL, FALSE);
 
     *substream_info = g_object_new(ALSARAWMIDI_TYPE_SUBSTREAM_INFO, NULL);
 
@@ -163,15 +186,22 @@ void alsarawmidi_get_substream_info(guint card_id, guint device_id,
     if (err < 0) {
         g_object_unref(*substream_info);
         generate_file_error(error, -err, "RAWMIDI_INFO");
+        return FALSE;
     }
+
+    return TRUE;
 }
 
-void rawmidi_select_subdevice(guint card_id, guint subdevice_id, int *ctl_fd, GError **error)
+gboolean rawmidi_select_subdevice(guint card_id, guint subdevice_id, int *ctl_fd, GError **error)
 {
     guint data = subdevice_id;
     int err;
 
     err = request_ctl_ioctl_opened(ctl_fd, card_id, SNDRV_CTL_IOCTL_RAWMIDI_PREFER_SUBDEVICE, &data);
-    if (err < 0)
+    if (err < 0) {
         generate_file_error(error, -err, "RAWMIDI_PREFER_SUBDEVICE");
+        return FALSE;
+    }
+
+    return TRUE;
 }
index 28ac9158d690f32d89f713e275fa0b571bdba467..ba588464b6ab5a128b71520771b54cbd4b8d9e57 100644 (file)
@@ -6,26 +6,23 @@
 
 G_BEGIN_DECLS
 
-void alsarawmidi_get_device_id_list(guint card_id,
-                                    guint **entries, gsize *entry_count,
-                                    GError **error);
-
-void alsarawmidi_get_rawmidi_sysname(guint card_id, guint device_id,
-                                     char **sysname, GError **error);
-
-void alsarawmidi_get_rawmidi_devnode(guint card_id, guint device_id,
-                                     char **devnode, GError **error);
-
-void alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
-                                       ALSARawmidiStreamDirection direction,
-                                       guint **entries, gsize *entry_count,
-                                       GError **error);
-
-void alsarawmidi_get_substream_info(guint card_id, guint device_id,
-                                    ALSARawmidiStreamDirection direction,
-                                    guint subdevice_id,
-                                    ALSARawmidiSubstreamInfo **substream_info,
-                                    GError **error);
+gboolean alsarawmidi_get_device_id_list(guint card_id, guint **entries, gsize *entry_count,
+                                        GError **error);
+
+gboolean alsarawmidi_get_rawmidi_sysname(guint card_id, guint device_id, char **sysname,
+                                         GError **error);
+
+gboolean alsarawmidi_get_rawmidi_devnode(guint card_id, guint device_id, char **devnode,
+                                         GError **error);
+
+gboolean alsarawmidi_get_subdevice_id_list(guint card_id, guint device_id,
+                                           ALSARawmidiStreamDirection direction,
+                                           guint **entries, gsize *entry_count, GError **error);
+
+gboolean alsarawmidi_get_substream_info(guint card_id, guint device_id,
+                                        ALSARawmidiStreamDirection direction,
+                                        guint subdevice_id,
+                                        ALSARawmidiSubstreamInfo **substream_info, GError **error);
 
 G_END_DECLS
 
index af356421b08a42d0393363cfdd547d95cba17388..2b3126800517c02c12eb04af84d3d7be5c1f66a8 100644 (file)
@@ -224,12 +224,10 @@ void alsarawmidi_stream_pair_open(ALSARawmidiStreamPair *self, guint card_id,
     else
         g_return_if_reached();
 
-    alsarawmidi_get_rawmidi_devnode(card_id, device_id, &devnode, error);
-    if (*error != NULL)
+    if (!alsarawmidi_get_rawmidi_devnode(card_id, device_id, &devnode, error))
         return;
 
-    rawmidi_select_subdevice(card_id, subdevice_id, &ctl_fd, error);
-    if (*error != NULL) {
+    if (!rawmidi_select_subdevice(card_id, subdevice_id, &ctl_fd, error)) {
         g_free(devnode);
         return;
     }