"alsaseq_get_seq_sysname";
"alsaseq_get_seq_devnode";
+ "alsaseq_get_system_info";
"alsaseq_system_info_get_type";
local:
#include <glib.h>
#include <glib-object.h>
+#include "system-info.h"
+
+#include <sound/asequencer.h>
+
G_BEGIN_DECLS
GQuark alsaseq_error_quark(void);
g_set_error(err, alsaseq_error_quark(), errno, \
__FILE__ ":%d: %s", __LINE__, strerror(errno))
+void seq_system_info_refer_private(ALSASeqSystemInfo *self,
+ struct snd_seq_system_info **info);
+
G_END_DECLS
#endif
#include "privates.h"
#include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/ioctl.h>
#include <libudev.h>
udev_device_unref(dev);
udev_unref(ctx);
}
+
+/**
+ * alsaseq_get_system_info:
+ * @system_info: (out): The information of ALSA Sequencer.
+ * @error: A #GError.
+ *
+ * Get information of ALSA Sequencer.
+ */
+void alsaseq_get_system_info(ALSASeqSystemInfo **system_info, GError **error)
+{
+ char *devnode;
+ struct snd_seq_system_info *info;
+ int fd;
+
+ alsaseq_get_seq_devnode(&devnode, error);
+ if (*error != NULL)
+ return;
+
+ *system_info = g_object_new(ALSASEQ_TYPE_SYSTEM_INFO, NULL);
+ seq_system_info_refer_private(*system_info, &info);
+
+ fd = open(devnode, O_RDONLY);
+ g_free(devnode);
+ if (fd < 0) {
+ generate_error(error, errno);
+ g_object_unref(*system_info);
+ *system_info = NULL;
+ return;
+ }
+
+ if (ioctl(fd, SNDRV_SEQ_IOCTL_SYSTEM_INFO, info) < 0)
+ generate_error(error, errno);
+ close(fd);
+ if (*error != NULL) {
+ g_object_unref(*system_info);
+ *system_info = NULL;
+ return;
+ }
+
+ // Decrement count for the above connection.
+ --info->cur_clients;
+}
#include <glib.h>
#include <glib-object.h>
+#include <seq/system-info.h>
+
G_BEGIN_DECLS
void alsaseq_get_seq_sysname(gchar **sysname, GError **error);
void alsaseq_get_seq_devnode(gchar **devnode, GError **error);
+void alsaseq_get_system_info(ALSASeqSystemInfo **system_info, GError **error);
+
G_END_DECLS
#endif
// SPDX-License-Identifier: LGPL-3.0-or-later
-#include "system-info.h"
-
-#include <sound/asequencer.h>
+#include "privates.h"
struct _ALSASeqSystemInfoPrivate {
struct snd_seq_system_info info;
{
return;
}
+
+void seq_system_info_refer_private(ALSASeqSystemInfo *self,
+ struct snd_seq_system_info **info)
+{
+ ALSASeqSystemInfoPrivate *priv =
+ alsaseq_system_info_get_instance_private(self);
+
+ *info = &priv->info;
+}