X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Flv2_evbuf.c;h=ae6d869b5fac0a87726d453086cbb66b5b56cced;hb=f6b59676b50d11dca38318c55a3ad38655cdb77d;hp=3037e8275c55d98211413a1f057e03c61ee5b323;hpb=7219d0d6514e1308d28c14ebd5638264e0789538;p=ardour.git diff --git a/libs/ardour/lv2_evbuf.c b/libs/ardour/lv2_evbuf.c index 3037e8275c..ae6d869b5f 100644 --- a/libs/ardour/lv2_evbuf.c +++ b/libs/ardour/lv2_evbuf.c @@ -115,6 +115,12 @@ lv2_evbuf_get_size(LV2_Evbuf* evbuf) return 0; } +uint32_t +lv2_evbuf_get_capacity(LV2_Evbuf* evbuf) +{ + return evbuf->capacity; +} + void* lv2_evbuf_get_buffer(LV2_Evbuf* evbuf) { @@ -160,13 +166,13 @@ lv2_evbuf_next(LV2_Evbuf_Iterator iter) uint32_t size; switch (evbuf->type) { case LV2_EVBUF_EVENT: - size = ((LV2_Event*)(evbuf->buf.event.data + offset))->size; + size = ((LV2_Event*)((uintptr_t)(evbuf->buf.event.data + offset)))->size; offset += lv2_evbuf_pad_size(sizeof(LV2_Event) + size); break; case LV2_EVBUF_ATOM: - size = ((LV2_Atom_Event*) + size = ((LV2_Atom_Event*)((uintptr_t) ((char*)LV2_ATOM_CONTENTS(LV2_Atom_Sequence, &evbuf->buf.atom) - + offset))->body.size; + + offset)))->body.size; offset += lv2_evbuf_pad_size(sizeof(LV2_Atom_Event) + size); break; } @@ -197,7 +203,7 @@ lv2_evbuf_get(LV2_Evbuf_Iterator iter, switch (iter.evbuf->type) { case LV2_EVBUF_EVENT: ebuf = &iter.evbuf->buf.event; - ev = (LV2_Event*)ebuf->data + iter.offset; + ev = (LV2_Event*)((uintptr_t)((char*)ebuf->data + iter.offset)); *frames = ev->frames; *subframes = ev->subframes; *type = ev->type; @@ -206,14 +212,14 @@ lv2_evbuf_get(LV2_Evbuf_Iterator iter, break; case LV2_EVBUF_ATOM: aseq = (LV2_Atom_Sequence*)&iter.evbuf->buf.atom; - aev = (LV2_Atom_Event*)( + aev = (LV2_Atom_Event*)((uintptr_t)( (char*)LV2_ATOM_CONTENTS(LV2_Atom_Sequence, aseq) - + iter.offset); + + iter.offset)); *frames = aev->time.frames; *subframes = 0; *type = aev->body.type; *size = aev->body.size; - *data = LV2_ATOM_BODY(&aev->body); + *data = (uint8_t*)LV2_ATOM_BODY(&aev->body); break; } @@ -239,7 +245,7 @@ lv2_evbuf_write(LV2_Evbuf_Iterator* iter, return false; } - ev = (LV2_Event*)(ebuf->data + iter->offset); + ev = (LV2_Event*)((uintptr_t)(ebuf->data + iter->offset)); ev->frames = frames; ev->subframes = subframes; ev->type = type; @@ -258,9 +264,9 @@ lv2_evbuf_write(LV2_Evbuf_Iterator* iter, return false; } - aev = (LV2_Atom_Event*)( + aev = (LV2_Atom_Event*)((uintptr_t)( (char*)LV2_ATOM_CONTENTS(LV2_Atom_Sequence, aseq) - + iter->offset); + + iter->offset)); aev->time.frames = frames; aev->body.type = type; aev->body.size = size; @@ -270,6 +276,8 @@ lv2_evbuf_write(LV2_Evbuf_Iterator* iter, aseq->atom.size += size; iter->offset += size; break; + default: + return false; } return true;