refactor: remove unnecessary callback passing

Since we now have a full function wrapper for libopusfile init anyway we
can directly pass the callback struct pointer from there, instead of
making it go through Go first.
This commit is contained in:
Hraban Luyat 2020-07-10 09:44:22 +01:00
parent 2a2b57e79d
commit f10c96b8f4
2 changed files with 5 additions and 8 deletions

View file

@ -11,9 +11,7 @@
// Defined in Go. Uses the same signature as Go, no need for proxy function.
int go_readcallback(void *p, unsigned char *buf, int nbytes);
// Allocated once, never moved. Pointer to this is safe for passing around
// between Go and C.
struct OpusFileCallbacks callbacks = {
static struct OpusFileCallbacks callbacks = {
.read = go_readcallback,
};
@ -23,7 +21,7 @@ struct OpusFileCallbacks callbacks = {
// we have this wrapper function to shush it.
// https://groups.google.com/g/golang-nuts/c/995uZyRPKlU
OggOpusFile *
my_open_callbacks(uintptr_t p, const OpusFileCallbacks *cb, int *error)
my_open_callbacks(uintptr_t p, int *error)
{
return op_open_callbacks((void *)p, cb, NULL, 0, error);
return op_open_callbacks((void *)p, &callbacks, NULL, 0, error);
}

View file

@ -16,8 +16,7 @@ import (
#include <stdint.h>
#include <string.h>
extern struct OpusFileCallbacks callbacks;
OggOpusFile *my_open_callbacks(uintptr_t p, const OpusFileCallbacks *cb, int *error);
OggOpusFile *my_open_callbacks(uintptr_t p, int *error);
*/
import "C"
@ -105,7 +104,7 @@ func (s *Stream) Init(read io.Reader) error {
// called.
streams.Save(s)
defer streams.Del(s)
oggfile := C.my_open_callbacks(C.uintptr_t(s.id), &C.callbacks, &errno)
oggfile := C.my_open_callbacks(C.uintptr_t(s.id), &errno)
if errno != 0 {
return StreamError(errno)
}