"alsactl_card_get_type";
"alsactl_card_new";
"alsactl_card_open";
+ "alsactl_card_get_info";
"alsactl_card_info_get_type";
local:
// SPDX-License-Identifier: LGPL-3.0-or-later
-#include "card-info.h"
-
-#include <sound/asound.h>
+#include "privates.h"
struct _ALSACtlCardInfoPrivate {
struct snd_ctl_card_info info;
{
return;
}
+
+void ctl_card_info_refer_private(ALSACtlCardInfo *self,
+ struct snd_ctl_card_info **info)
+{
+ ALSACtlCardInfoPrivate *priv = alsactl_card_info_get_instance_private(self);
+
+ *info = &priv->info;
+}
#include <unistd.h>
#include <sys/ioctl.h>
-#include <sound/asound.h>
-
struct _ALSACtlCardPrivate {
int fd;
char *devnode;
priv->devnode = devnode;
}
+
+/**
+ * alsactl_card_get_info:
+ * @self: A #ALSACtlCard.
+ * @card_info: (out): A #ALSACtlCardInfo for the sound card.
+ * @error: A #GError.
+ *
+ * Get the information of sound card.
+ */
+void alsactl_card_get_info(ALSACtlCard *self, ALSACtlCardInfo **card_info,
+ GError **error)
+{
+ ALSACtlCardPrivate *priv;
+ struct snd_ctl_card_info *info;
+
+ g_return_if_fail(ALSACTL_IS_CARD(self));
+ priv = alsactl_card_get_instance_private(self);
+
+ *card_info = g_object_new(ALSACTL_TYPE_CARD_INFO, NULL);
+
+ ctl_card_info_refer_private(*card_info, &info);
+ if (ioctl(priv->fd, SNDRV_CTL_IOCTL_CARD_INFO, info) < 0) {
+ generate_error(error, errno);
+ g_object_unref(*card_info);
+ }
+}
#include <glib.h>
#include <glib-object.h>
+#include <ctl/card-info.h>
+
G_BEGIN_DECLS
#define ALSACTL_TYPE_CARD (alsactl_card_get_type())
void alsactl_card_open(ALSACtlCard *self, guint card_id, GError **error);
+void alsactl_card_get_info(ALSACtlCard *self, ALSACtlCardInfo **card_info,
+ GError **error);
+
G_END_DECLS
#endif
#include <glib.h>
#include <glib-object.h>
+#include "card-info.h"
+
+#include <sound/asound.h>
+
G_BEGIN_DECLS
GQuark alsactl_error_quark(void);
g_set_error(err, alsactl_error_quark(), errno, \
__FILE__ ":%d: %s", __LINE__, strerror(errno))
+void ctl_card_info_refer_private(ALSACtlCardInfo *self,
+ struct snd_ctl_card_info **info);
+
G_END_DECLS
#endif
methods = (
'new',
'open',
+ 'get_info',
)
signals = ()