if (ioctl(priv->fd, request, data) < 0)
generate_error(error, errno);
}
+
+/**
+ * alsaseq_user_client_create_queue:
+ * @self: A #ALSASeqUserClient.
+ * @queue_info: The information of queue to add.
+ * @error: A #GError.
+ *
+ * Create a new queue owned by the client. The content of information is updated
+ * if success.
+ */
+void alsaseq_user_client_create_queue(ALSASeqUserClient *self,
+ ALSASeqQueueInfo *queue_info, GError **error)
+{
+ ALSASeqUserClientPrivate *priv;
+ struct snd_seq_queue_info *info;
+
+ g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
+ g_return_if_fail(ALSASEQ_IS_QUEUE_INFO(queue_info));
+ priv = alsaseq_user_client_get_instance_private(self);
+
+ seq_queue_info_refer_private(queue_info, &info);
+
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_CREATE_QUEUE, info) < 0)
+ generate_error(error, errno);
+}
+
+/**
+ * alsaseq_user_client_delete_queue:
+ * @self: A #ALSASeqUserClient.
+ * @queue_id: The numerical ID of queue, except for one of ALSASeqSpecificQueueId.
+ * @error: A #GError.
+ *
+ * Delete the queue owned by the client.
+ */
+void alsaseq_user_client_delete_queue(ALSASeqUserClient *self,
+ guint queue_id, GError **error)
+{
+ ALSASeqUserClientPrivate *priv;
+ struct snd_seq_queue_info info = {0};
+
+ g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
+ priv = alsaseq_user_client_get_instance_private(self);
+
+ info.queue = (int)queue_id;
+ info.owner = priv->client_id;
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_DELETE_QUEUE, &info) < 0)
+ generate_error(error, errno);
+}
+
+/**
+ * alsaseq_user_client_update_queue:
+ * @self: A #ALSASeqUserClient.
+ * @queue_info: The information of queue to add.
+ * @error: A #GError.
+ *
+ * Update owned queue according to the information.
+ */
+void alsaseq_user_client_update_queue(ALSASeqUserClient *self,
+ ALSASeqQueueInfo *queue_info,
+ GError **error)
+{
+ ALSASeqUserClientPrivate *priv;
+ struct snd_seq_queue_info *info;
+
+ g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
+ g_return_if_fail(ALSASEQ_IS_QUEUE_INFO(queue_info));
+ priv = alsaseq_user_client_get_instance_private(self);
+
+ seq_queue_info_refer_private(queue_info, &info);
+
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_CREATE_QUEUE, info) < 0)
+ generate_error(error, errno);
+}
#include <seq/event-fixed.h>
#include <seq/event-variable.h>
#include <seq/subscribe-data.h>
+#include <seq/queue-info.h>
G_BEGIN_DECLS
gboolean establish,
GError **error);
+void alsaseq_user_client_create_queue(ALSASeqUserClient *self,
+ ALSASeqQueueInfo *queue_info, GError **error);
+void alsaseq_user_client_delete_queue(ALSASeqUserClient *self,
+ guint queue_id, GError **error);
+void alsaseq_user_client_update_queue(ALSASeqUserClient *self,
+ ALSASeqQueueInfo *queue_info, GError **error);
+
G_END_DECLS
#endif