"alsaseq_get_queue_id_list";
"alsaseq_get_queue_info_by_id";
"alsaseq_get_queue_info_by_name";
+ "alsaseq_get_queue_status";
"alsaseq_system_info_get_type";
#include "event.h"
#include "subscribe-data.h"
#include "queue-info.h"
+#include "queue-status.h"
#include <sound/asequencer.h>
void seq_queue_info_refer_private(ALSASeqQueueInfo *self,
struct snd_seq_queue_info **info);
+void seq_queue_status_refer_private(ALSASeqQueueStatus *self,
+ struct snd_seq_queue_status **status);
+
G_END_DECLS
#endif
close(fd);
}
+
+/**
+ * alsaseq_get_queue_status:
+ * @queue_id: The numerical ID of queue, except for entries in
+ * ALSASeqSpecificQueueId.
+ * @queue_status: (out): The current status of queue.
+ * @error: A #GError.
+ *
+ * Get current status of queue.
+ */
+void alsaseq_get_queue_status(guint queue_id, ALSASeqQueueStatus **queue_status,
+ GError **error)
+{
+ struct snd_seq_queue_status *status;
+ char *devnode;
+ int fd;
+
+ alsaseq_get_seq_devnode(&devnode, error);
+ if (*error != NULL)
+ return;
+
+ fd = open(devnode, O_RDONLY);
+ g_free(devnode);
+ if (fd < 0) {
+ generate_error(error, errno);
+ return;
+ }
+
+ *queue_status = g_object_new(ALSASEQ_TYPE_QUEUE_STATUS, NULL);
+ seq_queue_status_refer_private(*queue_status, &status);
+
+ status->queue = (int)queue_id;
+ if (ioctl(fd, SNDRV_SEQ_IOCTL_GET_QUEUE_STATUS, status) < 0) {
+ generate_error(error, errno);
+ close(fd);
+ g_object_unref(*queue_status);
+ return;
+ }
+
+ close(fd);
+}
#include <seq/client-pool.h>
#include <seq/subscribe-data.h>
#include <seq/queue-info.h>
+#include <seq/queue-status.h>
G_BEGIN_DECLS
ALSASeqQueueInfo **queue_info,
GError **error);
+void alsaseq_get_queue_status(guint queue_id, ALSASeqQueueStatus **queue_status,
+ GError **error);
+
G_END_DECLS
#endif
// SPDX-License-Identifier: LGPL-3.0-or-later
-#include "queue-status.h"
-
-#include <sound/asequencer.h>
+#include "privates.h"
struct _ALSASeqQueueStatusPrivate {
struct snd_seq_queue_status status;
// supported ABIs.
*real_time = (const guint32 *)&priv->status.time;
}
+
+void seq_queue_status_refer_private(ALSASeqQueueStatus *self,
+ struct snd_seq_queue_status **status)
+{
+ ALSASeqQueueStatusPrivate *priv =
+ alsaseq_queue_status_get_instance_private(self);
+
+ *status = &priv->status;
+}