if info.get_property('elem-type') == ALSACtl.ElemType.BOOLEAN:
value = elem_value.get_bool()[:value_count]
elif info.get_property('elem-type') == ALSACtl.ElemType.INTEGER:
- value = elem_value.get_int(value)
+ value = elem_value.get_int()[:value_count]
elif info.get_property('elem-type') == ALSACtl.ElemType.ENUMERATED:
value = elem_value.get_enum(value)
elif info.get_property('elem-type') == ALSACtl.ElemType.BYTES:
"alsactl_elem_value_new";
"alsactl_elem_value_set_bool";
"alsactl_elem_value_set_int";
- "alsactl_elem_value_get_int";
"alsactl_elem_value_set_enum";
"alsactl_elem_value_get_enum";
"alsactl_elem_value_set_bytes";
"alsactl_elem_info_enumerated_new";
"alsactl_elem_value_get_bool";
+ "alsactl_elem_value_get_int";
} ALSA_GOBJECT_0_2_0;
typedef struct {
struct snd_ctl_elem_value value;
gboolean boolean[128];
+ gint32 integer[128];
} ALSACtlElemValuePrivate;
G_DEFINE_TYPE_WITH_PRIVATE(ALSACtlElemValue, alsactl_elem_value, G_TYPE_OBJECT)
/**
* alsactl_elem_value_get_int:
* @self: A [class@ElemValue].
- * @values: (array length=value_count)(inout): The array for values of integer
- * type.
+ * @values: (array length=value_count) (out) (transfer none): The array for 32 bit signed integer
+ * values.
* @value_count: The number of values up to 128.
*
- * Copy the array for values of integer type from internal storage.
+ * Refer to the array for [enum@ElemType].INTEGER element in internal storage.
*/
-void alsactl_elem_value_get_int(ALSACtlElemValue *self, gint32 *const *values, gsize *value_count)
+void alsactl_elem_value_get_int(ALSACtlElemValue *self, const gint32 **values, gsize *value_count)
{
ALSACtlElemValuePrivate *priv;
struct snd_ctl_elem_value *value;
g_return_if_fail(value_count != NULL);
value = &priv->value;
- *value_count = MIN(*value_count, G_N_ELEMENTS(value->value.integer.value));
- for (i = 0; i < *value_count; ++i)
- (*values)[i] = (gint32)value->value.integer.value[i];
+ for (i = 0; i < G_N_ELEMENTS(value->value.integer.value); ++i)
+ priv->integer[i] = (gint32)value->value.integer.value[i];
+
+ *values = priv->integer;
+ *value_count = G_N_ELEMENTS(value->value.integer.value);
}
/**
void alsactl_elem_value_set_int(ALSACtlElemValue *self, const gint32 *values,
gsize value_count);
-void alsactl_elem_value_get_int(ALSACtlElemValue *self, gint32 *const *values,
+void alsactl_elem_value_get_int(ALSACtlElemValue *self, const gint32 **values,
gsize *value_count);
void alsactl_elem_value_set_enum(ALSACtlElemValue *self,