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:
parent
2a2b57e79d
commit
f10c96b8f4
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue