]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
ctl: elem-value: rewrite getter for IEC 60958 user data
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Sat, 25 Jun 2022 02:00:43 +0000 (11:00 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Sun, 26 Jun 2022 07:08:37 +0000 (16:08 +0900)
This commit rewrites the getter method so that it returns a pointer to
internal storage for IEC 60958 user data.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/ctl/alsactl.map
src/ctl/elem-value.c
src/ctl/elem-value.h

index a8fd5563c388e35200890c7400f6a436325764b4..385d1979a8e7fc1c62fd48827fd79194ab1475ab 100644 (file)
@@ -30,7 +30,6 @@ ALSA_GOBJECT_0_0_0 {
     "alsactl_elem_value_set_bytes";
     "alsactl_elem_value_set_iec60958_user_data";
     "alsactl_elem_value_set_iec60958_channel_status";
-    "alsactl_elem_value_get_iec60958_channel_status";
     "alsactl_elem_value_set_int64";
     "alsactl_elem_value_get_int64";
     "alsactl_elem_value_equal";
@@ -94,4 +93,5 @@ ALSA_GOBJECT_0_3_0 {
     "alsactl_elem_value_get_enum";
     "alsactl_elem_value_get_bytes";
     "alsactl_elem_value_get_iec60958_user_data";
+    "alsactl_elem_value_get_iec60958_channel_status";
 } ALSA_GOBJECT_0_2_0;
index 697fad22c5b6118171c23ff1304bc697b33bd5c8..44f926830405c5faca506e9bd32258aca5f9a438 100644 (file)
@@ -385,17 +385,17 @@ void alsactl_elem_value_set_iec60958_user_data(ALSACtlElemValue *self, const gui
 /**
  * alsactl_elem_value_get_iec60958_user_data:
  * @self: A [class@ElemValue].
- * @data: (array length=length)(inout): The array of byte data for user data bits in IEC 60958.
- * @length: The number of bytes in user_data argument, up to 147.
+ * @data: (array length=length) (out) (transfer none): The array of byte data for user data bits of
+ *        IEC 60958.
+ * @length: The number of bytes in user_data argument up to 147.
  *
- * Copy user data of IEC 60958 from internal storage.
+ * Refer to the array specific to [enum@ElemType].IEC60958 element in internal storage.
  */
-void alsactl_elem_value_get_iec60958_user_data(ALSACtlElemValue *self, guint8 *const *data,
+void alsactl_elem_value_get_iec60958_user_data(ALSACtlElemValue *self, const guint8 **data,
                                                gsize *length)
 {
     ALSACtlElemValuePrivate *priv;
     struct snd_ctl_elem_value *value;
-    int i;
 
     g_return_if_fail(ALSACTL_IS_ELEM_VALUE(self));
     priv = alsactl_elem_value_get_instance_private(self);
@@ -404,9 +404,8 @@ void alsactl_elem_value_get_iec60958_user_data(ALSACtlElemValue *self, guint8 *c
     g_return_if_fail(length != NULL);
 
     value = &priv->value;
-    *length = MIN(*length, G_N_ELEMENTS(value->value.iec958.subcode));
-    for (i = 0; i < *length; ++i)
-        (*data)[i] = value->value.iec958.subcode[i];
+    *data = value->value.iec958.subcode;
+    *length = G_N_ELEMENTS(value->value.iec958.subcode);
 }
 
 /**
index 6a69105e4a7d21ac103a739a851490b017b6ab32..17d08b09b650beaf8b7231f53e9dfbb58faece2c 100644 (file)
@@ -44,7 +44,7 @@ void alsactl_elem_value_get_iec60958_channel_status(ALSACtlElemValue *self,
 void alsactl_elem_value_set_iec60958_user_data(ALSACtlElemValue *self,
                                         const guint8 *data, gsize length);
 void alsactl_elem_value_get_iec60958_user_data(ALSACtlElemValue *self,
-                                        guint8 *const *data, gsize *length);
+                                        const guint8 **data, gsize *length);
 
 void alsactl_elem_value_set_int64(ALSACtlElemValue *self, const gint64 *values,
                                   gsize value_count);