From: Takashi Sakamoto Date: Mon, 18 Nov 2019 04:22:44 +0000 (+0900) Subject: rawmidi: stream_pair: add an API to drop queued data for attached substream X-Git-Tag: v0.1.0~172 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=9833cf31e5a46801a0c41c30fb4805d9fc4b54ce;p=alsa-gobject.git rawmidi: stream_pair: add an API to drop queued data for attached substream Signed-off-by: Takashi Sakamoto --- diff --git a/src/rawmidi/alsarawmidi.map b/src/rawmidi/alsarawmidi.map index 0429bf3..9f81ab1 100644 --- a/src/rawmidi/alsarawmidi.map +++ b/src/rawmidi/alsarawmidi.map @@ -20,6 +20,7 @@ ALSA_GOBJECT_0_0_0 { "alsarawmidi_stream_pair_read_from_substream"; "alsarawmidi_stream_pair_write_to_substream"; "alsarawmidi_stream_pair_drain_substream"; + "alsarawmidi_stream_pair_drop_substream"; "alsarawmidi_substream_params_get_type"; "alsarawmidi_substream_params_new"; diff --git a/src/rawmidi/stream-pair.c b/src/rawmidi/stream-pair.c index bede69f..265e0c2 100644 --- a/src/rawmidi/stream-pair.c +++ b/src/rawmidi/stream-pair.c @@ -324,3 +324,26 @@ void alsarawmidi_stream_pair_drain_substream(ALSARawmidiStreamPair *self, if (ioctl(priv->fd, SNDRV_RAWMIDI_IOCTL_DRAIN, &direction) < 0) generate_error(error, errno); } + +/** + * alsarawmidi_stream_pair_drop: + * @self: A #ALSARawmidiStreamPair. + * @direction: The direction of substream attached to the stream pair. + * @err: A #GError. + * + * Drop queued data in intermediate buffer immediately for substream attached + * to the pair of streams. In implementation of ALSA rawmidi core, the + * direction should be for output substream. + */ +void alsarawmidi_stream_pair_drop_substream(ALSARawmidiStreamPair *self, + ALSARawmidiStreamDirection direction, + GError **error) +{ + ALSARawmidiStreamPairPrivate *priv; + + g_return_if_fail(ALSARAWMIDI_IS_STREAM_PAIR(self)); + priv = alsarawmidi_stream_pair_get_instance_private(self); + + if (ioctl(priv->fd, SNDRV_RAWMIDI_IOCTL_DROP, &direction) < 0) + generate_error(error, errno); +} diff --git a/src/rawmidi/stream-pair.h b/src/rawmidi/stream-pair.h index 7f2ddc9..79a4d8e 100644 --- a/src/rawmidi/stream-pair.h +++ b/src/rawmidi/stream-pair.h @@ -83,6 +83,10 @@ void alsarawmidi_stream_pair_drain_substream(ALSARawmidiStreamPair *self, ALSARawmidiStreamDirection direction, GError **error); +void alsarawmidi_stream_pair_drop_substream(ALSARawmidiStreamPair *self, + ALSARawmidiStreamDirection direction, + GError **error); + G_END_DECLS #endif diff --git a/tests/alsarawmidi-stream-pair b/tests/alsarawmidi-stream-pair index 7457b9d..3002461 100644 --- a/tests/alsarawmidi-stream-pair +++ b/tests/alsarawmidi-stream-pair @@ -22,6 +22,7 @@ methods = ( 'read_from_substream', 'write_to_substream', 'drain_substream', + 'drop_substream', ) signals = ()