From: Takashi Sakamoto Date: Mon, 8 Jun 2020 14:10:10 +0000 (+0900) Subject: seq: user_client: use ALSASeqEventCntr to parse read data X-Git-Tag: v0.1.0~111 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=0111b27e7296743ef34bbb3d7679451afa7523f6;p=alsa-gobject.git seq: user_client: use ALSASeqEventCntr to parse read data Signed-off-by: Takashi Sakamoto --- diff --git a/src/seq/event-cntr.c b/src/seq/event-cntr.c index 9c5b0ea..43db2d7 100644 --- a/src/seq/event-cntr.c +++ b/src/seq/event-cntr.c @@ -1546,3 +1546,12 @@ void alsaseq_event_cntr_set_result_data(ALSASeqEventCntr *self, gsize index, ev->data.result = *(struct snd_seq_result *)data; } + +void seq_event_cntr_set_buf(ALSASeqEventCntr *self, guint8 *buf, + gsize length) +{ + ALSASeqEventCntrPrivate *priv = + alsaseq_event_cntr_get_instance_private(self); + priv->buf = buf; + priv->length = length; +} diff --git a/src/seq/privates.h b/src/seq/privates.h index ff07c7b..f07ef34 100644 --- a/src/seq/privates.h +++ b/src/seq/privates.h @@ -58,6 +58,9 @@ void seq_queue_tempo_refer_private(ALSASeqQueueTempo *self, void seq_queue_timer_refer_private(ALSASeqQueueTimer *self, struct snd_seq_queue_timer **timer); +void seq_event_cntr_set_buf(ALSASeqEventCntr *self, guint8 *buf, + gsize length); + G_END_DECLS #endif diff --git a/src/seq/user-client.c b/src/seq/user-client.c index b60ecf2..e0d8273 100644 --- a/src/seq/user-client.c +++ b/src/seq/user-client.c @@ -40,6 +40,7 @@ typedef struct { size_t buf_len; ALSASeqEventFixed *ev_fixed; ALSASeqEventVariable *ev_var; + ALSASeqEventCntr *ev_cntr; } UserClientSource; enum seq_user_client_prop_type { @@ -453,6 +454,8 @@ static gboolean seq_user_client_dispatch_src(GSource *gsrc, GSourceFunc cb, return G_SOURCE_REMOVE; } + seq_event_cntr_set_buf(src->ev_cntr, src->buf, len); + buf = src->buf; while (len >= sizeof(*event)) { struct snd_seq_event *data_ptr; @@ -511,6 +514,7 @@ static void seq_user_client_finalize_src(GSource *gsrc) g_object_unref(src->ev_fixed); g_object_unref(src->ev_var); + g_object_unref(src->ev_cntr); g_free(src->buf); g_object_unref(src->self); @@ -556,6 +560,7 @@ void alsaseq_user_client_create_source(ALSASeqUserClient *self, src->ev_fixed = g_object_new(ALSASEQ_TYPE_EVENT_FIXED, NULL); src->ev_var = g_object_new(ALSASEQ_TYPE_EVENT_VARIABLE, NULL); + src->ev_cntr = g_object_new(ALSASEQ_TYPE_EVENT_CNTR, NULL); g_source_set_name(*gsrc, "ALSASeqUserClient"); g_source_set_priority(*gsrc, G_PRIORITY_HIGH_IDLE); diff --git a/src/seq/user-client.h b/src/seq/user-client.h index 7b703be..6125195 100644 --- a/src/seq/user-client.h +++ b/src/seq/user-client.h @@ -17,6 +17,7 @@ #include #include #include +#include G_BEGIN_DECLS