]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
ctl: elem_info: add accessor APIs for triplet data of integer64 element
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Fri, 12 Jun 2020 04:19:45 +0000 (13:19 +0900)
committer坂本 貴史 <o-takashi@sakamocchi.jp>
Fri, 12 Jun 2020 06:45:37 +0000 (15:45 +0900)
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
src/ctl/alsactl.map
src/ctl/elem-info.c
src/ctl/elem-info.h
tests/alsactl-elem-info

index ba51b69721231548015a1de9cb962017f620e247..61f463b1a75278da3e9ece78cfcf6df548874c68 100644 (file)
@@ -45,6 +45,8 @@ ALSA_GOBJECT_0_0_0 {
     "alsactl_elem_info_get_type";
     "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_bool_get_type";
     "alsactl_elem_info_bool_new";
index 7e9cbc10357e451b5c20be5b03ac87f40b88f8ff..e7e1c0fe2f58cbcec702fa6fe682066886d7203a 100644 (file)
@@ -187,6 +187,68 @@ void alsactl_elem_info_set_int_data(ALSACtlElemInfo *self,
     priv->info.value.integer.step = (long)data[2];
 }
 
+/**
+ * alsactl_elem_info_get_int64_data:
+ * @self: A #ALSACtlElemInfo.
+ * @data: (array fixed-size=3)(out)(transfer none): The array with elements for
+ *        the data of integer64 element; minimum value, maximum value, and value
+ *        step in the order.
+ * @error: A #GError.
+ *
+ * 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.
+ */
+void 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));
+    priv = alsactl_elem_info_get_instance_private(self);
+
+    if (priv->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER64) {
+        generate_error(error, ENXIO);
+        return;
+    }
+
+    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;
+}
+
+/**
+ * alsactl_elem_info_set_int64_data:
+ * @self: A #ALSACtlElemInfo.
+ * @data: (array fixed-size=3)(transfer none): The array with elements for
+ *        the data of integer64 element; minimum value, maximum value, and value
+ *        step in the order.
+ * @error: A #GError.
+ *
+ * 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.
+ */
+void 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));
+    priv = alsactl_elem_info_get_instance_private(self);
+
+    if (priv->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER64) {
+        generate_error(error, ENXIO);
+        return;
+    }
+
+    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];
+}
+
 void ctl_elem_info_refer_private(ALSACtlElemInfo *self,
                                  struct snd_ctl_elem_info **info)
 {
index fef08a7a48761520303a9e442724a66cf4ba3c26..548e2996594adf72dc41c39629535e0b939486c1 100644 (file)
@@ -54,6 +54,11 @@ void alsactl_elem_info_get_int_data(ALSACtlElemInfo *self,
 void 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);
+
 G_END_DECLS
 
 #endif
index 270d3f77186c522d34204415f6b71c31a7780339..78cebdc2156a7f5af85b5ab9bc9bf22ca28339d5 100644 (file)
@@ -19,6 +19,8 @@ props = (
 methods = (
     'get_int_data',
     'set_int_data',
+    'get_int64_data',
+    'set_int64_data',
 )
 signals = ()