]> git.alsa-project.org Git - alsa-gobject.git/commitdiff
ctl: card: add an API to remove user-defined elements
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 18 Nov 2019 04:22:44 +0000 (13:22 +0900)
committerTakashi Sakamoto <o-takashi@sakamocchi.jp>
Thu, 12 Dec 2019 05:29:12 +0000 (14:29 +0900)
src/ctl/alsactl.map
src/ctl/card.c
src/ctl/card.h
tests/alsactl-card

index 1a5637d81edb47fe9e79988009e29054f4d451a8..967f757d4af6256032c0c56d8d8a8795f869600a 100644 (file)
@@ -23,6 +23,7 @@ ALSA_GOBJECT_0_0_0 {
     "alsactl_card_command_elem_tlv";
     "alsactl_card_add_elems";
     "alsactl_card_replace_elems";
+    "alsactl_card_remove_elems";
 
     "alsactl_card_info_get_type";
 
index 94b474178af7e73ebdcd4deea261e14274d93cbc..d1e106b68d1a46cfe457dd6717e140b76cee9637 100644 (file)
@@ -612,3 +612,24 @@ void alsactl_card_replace_elems(ALSACtlCard *self, const ALSACtlElemId *elem_id,
     add_or_replace_elems(priv->fd, elem_id, elem_count, elem_info, TRUE,
                          entries, error);
 }
+
+/**
+ * alsactl_card_remove_elems:
+ * @self: A #ALSACtlCard.
+ * @elem_id: A #ALSACtlElemId.
+ * @error: A #GError.
+ *
+ * Remove user-defined elements.
+ */
+void alsactl_card_remove_elems(ALSACtlCard *self, const ALSACtlElemId *elem_id,
+                               GError **error)
+{
+    ALSACtlCardPrivate *priv;
+
+    g_return_if_fail(ALSACTL_IS_CARD(self));
+    g_return_if_fail(elem_id != NULL);
+    priv = alsactl_card_get_instance_private(self);
+
+    if (ioctl(priv->fd, SNDRV_CTL_IOCTL_ELEM_REMOVE, elem_id) < 0)
+        generate_error(error, errno);
+}
index 171ff8cf096801bb3dd537ee397e6e9588a57a21..570b8a151d691037d6c36526905c41d6a36c759f 100644 (file)
@@ -83,6 +83,8 @@ void alsactl_card_add_elems(ALSACtlCard *self, const ALSACtlElemId *elem_id,
 void alsactl_card_replace_elems(ALSACtlCard *self, const ALSACtlElemId *elem_id,
                             guint elem_count, ALSACtlElemInfo *elem_info,
                             GList **entries, GError **error);
+void alsactl_card_remove_elems(ALSACtlCard *self, const ALSACtlElemId *elem_id,
+                               GError **error);
 
 G_END_DECLS
 
index 8c6a6643a0de3c085d197e9f7a827b08c845ceb5..fc68e234f7df98f90662366e6a38d70b8facfd01 100644 (file)
@@ -25,6 +25,7 @@ methods = (
     'command_elem_tlv',
     'add_elems',
     'replace_elems',
+    'remove_elems',
 )
 signals = ()