if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_GET_CLIENT_INFO, info) < 0)
generate_error(error, errno);
}
+
+/**
+ * alsaseq_user_client_create_port:
+ * @self: A #ALSASeqUserClient.
+ * @port_info: A #ALSASeqPortInfo.
+ * @port_id: (nullable): The numerical ID of port if specified.
+ * @error: A #GError.
+ *
+ * Create a port into the client.
+ */
+void alsaseq_user_client_create_port(ALSASeqUserClient *self,
+ ALSASeqPortInfo *port_info,
+ guint8 *port_id, GError **error)
+{
+ ALSASeqUserClientPrivate *priv;
+ struct snd_seq_port_info *info;
+
+ g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
+ g_return_if_fail(ALSASEQ_IS_PORT_INFO(port_info));
+ priv = alsaseq_user_client_get_instance_private(self);
+
+ seq_port_info_refer_private(port_info, &info);
+
+ info->addr.client = priv->client_id;
+ if (port_id != NULL) {
+ info->addr.port = *port_id;
+ info->flags |= SNDRV_SEQ_PORT_FLG_GIVEN_PORT;
+ }
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_CREATE_PORT, info) < 0)
+ generate_error(error, errno);
+}
+
+/**
+ * alsaseq_user_client_update_port:
+ * @self: A #ALSASeqUserClient.
+ * @port_info: A #ALSASeqPortInfo.
+ * @port_id: The numerical ID of port.
+ * @error: A #GError.
+ *
+ */
+void alsaseq_user_client_update_port(ALSASeqUserClient *self,
+ ALSASeqPortInfo *port_info,
+ guint8 port_id, GError **error)
+{
+ ALSASeqUserClientPrivate *priv;
+ struct snd_seq_port_info *info;
+
+ g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
+ g_return_if_fail(ALSASEQ_IS_PORT_INFO(port_info));
+ priv = alsaseq_user_client_get_instance_private(self);
+
+ seq_port_info_refer_private(port_info, &info);
+
+ info->addr.client = priv->client_id;
+ info->addr.port = port_id;
+
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_SET_PORT_INFO, info) < 0)
+ generate_error(error, errno);
+}
+
+/**
+ * alsaseq_user_client_delete_port:
+ * @self: A #ALSASeqUserClient.
+ * @port_info: A #ALSASeqPortInfo.
+ * @port_id: The numerical ID of port.
+ * @error: A #GError.
+ *
+ * Delete a port from the client.
+ */
+void alsaseq_user_client_delete_port(ALSASeqUserClient *self,
+ ALSASeqPortInfo *port_info,
+ guint8 port_id, GError **error)
+{
+ ALSASeqUserClientPrivate *priv;
+ struct snd_seq_port_info *info;
+
+ g_return_if_fail(ALSASEQ_IS_USER_CLIENT(self));
+ g_return_if_fail(ALSASEQ_IS_PORT_INFO(port_info));
+ priv = alsaseq_user_client_get_instance_private(self);
+
+ seq_port_info_refer_private(port_info, &info);
+
+ info->addr.client = priv->client_id;
+ info->addr.port = port_id;
+ if (ioctl(priv->fd, SNDRV_SEQ_IOCTL_DELETE_PORT, info) < 0)
+ generate_error(error, errno);
+}
#include <glib-object.h>
#include <seq/client-info.h>
+#include <seq/port-info.h>
G_BEGIN_DECLS
ALSASeqClientInfo *const *client_info,
GError **error);
+void alsaseq_user_client_create_port(ALSASeqUserClient *self,
+ ALSASeqPortInfo *port_info,
+ guint8 *port_id, GError **error);
+
+void alsaseq_user_client_update_port(ALSASeqUserClient *self,
+ ALSASeqPortInfo *port_info,
+ guint8 port_id, GError **error);
+
+void alsaseq_user_client_delete_port(ALSASeqUserClient *self,
+ ALSASeqPortInfo *port_info,
+ guint8 port_id, GError **error);
+
G_END_DECLS
#endif