fix segfault (rookie mistake)
This commit is contained in:
parent
031b5a21e5
commit
0b2fe539ef
2 changed files with 25 additions and 15 deletions
|
@ -1,4 +1,5 @@
|
||||||
#define PARAM_NAME_LEN 24
|
// including null-terminator!
|
||||||
|
#define PARAM_NAME_LEN 25
|
||||||
|
|
||||||
// TOOD: dump enums in param namespace
|
// TOOD: dump enums in param namespace
|
||||||
|
|
||||||
|
@ -24,7 +25,7 @@ typedef enum {
|
||||||
} param_default;
|
} param_default;
|
||||||
|
|
||||||
struct Param {
|
struct Param {
|
||||||
char name[PARAM_NAME_LEN + 1];
|
char name[PARAM_NAME_LEN];
|
||||||
float value, min, max;
|
float value, min, max;
|
||||||
param_scale scale;
|
param_scale scale;
|
||||||
param_default def;
|
param_default def;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
//#REDEFINE
|
//#REDEFINE
|
||||||
|
|
||||||
#ifndef PARAM_NAME_LEN
|
#ifndef PARAM_NAME_LEN
|
||||||
#define PARAM_NAME_LEN 24
|
#define PARAM_NAME_LEN 25
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
|
@ -18,7 +18,7 @@ enum {
|
||||||
|
|
||||||
#define ALLOC(type, amount) (type *) calloc(amount, sizeof(type))
|
#define ALLOC(type, amount) (type *) calloc(amount, sizeof(type))
|
||||||
|
|
||||||
char p_default_strings[IO_PLUGS][PARAM_NAME_LEN + 1] = {
|
char p_default_strings[IO_PLUGS][PARAM_NAME_LEN] = {
|
||||||
"Input L", "Input R",
|
"Input L", "Input R",
|
||||||
"Output L", "Output R"
|
"Output L", "Output R"
|
||||||
};
|
};
|
||||||
|
@ -59,16 +59,22 @@ struct plug_t {
|
||||||
|
|
||||||
TEMPLATE
|
TEMPLATE
|
||||||
struct LADSPA_Plugin : public T {
|
struct LADSPA_Plugin : public T {
|
||||||
|
//static constexpr ulong name_buf_size = (portcount)*PARAM_NAME_LEN;
|
||||||
|
static constexpr ulong portcount = IO_PLUGS + T::parameters;
|
||||||
static Param default_params[T::parameters];
|
static Param default_params[T::parameters];
|
||||||
static LADSPA_PortDescriptor descs[IO_PLUGS + T::parameters];
|
static LADSPA_PortDescriptor descs[portcount];
|
||||||
static LADSPA_PortRangeHint hints[IO_PLUGS + T::parameters];
|
static LADSPA_PortRangeHint hints[portcount];
|
||||||
static char names[IO_PLUGS + T::parameters][PARAM_NAME_LEN + 1];
|
static char* names[portcount];
|
||||||
|
static char name_buffer[portcount][PARAM_NAME_LEN];
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init()
|
init()
|
||||||
{
|
{
|
||||||
|
for (int i = 0; i < portcount; i++)
|
||||||
|
names[i] = name_buffer[i];
|
||||||
|
|
||||||
for (int i = 0; i < IO_PLUGS; i++) {
|
for (int i = 0; i < IO_PLUGS; i++) {
|
||||||
memcpy(names[i], p_default_strings[i], PARAM_NAME_LEN + 1);
|
memcpy(names[i], p_default_strings[i], PARAM_NAME_LEN);
|
||||||
descs[i] = LADSPA_PORT_AUDIO;
|
descs[i] = LADSPA_PORT_AUDIO;
|
||||||
descs[i] |= (i < 2) ? LADSPA_PORT_INPUT : LADSPA_PORT_OUTPUT;
|
descs[i] |= (i < 2) ? LADSPA_PORT_INPUT : LADSPA_PORT_OUTPUT;
|
||||||
hints[i] = (LADSPA_PortRangeHint){.HintDescriptor = 0};
|
hints[i] = (LADSPA_PortRangeHint){.HintDescriptor = 0};
|
||||||
|
@ -79,7 +85,7 @@ struct LADSPA_Plugin : public T {
|
||||||
int j = i + IO_PLUGS;
|
int j = i + IO_PLUGS;
|
||||||
Param *p = &default_params[i];
|
Param *p = &default_params[i];
|
||||||
|
|
||||||
memcpy(names[j], p->name, PARAM_NAME_LEN + 1);
|
memcpy(names[j], p->name, PARAM_NAME_LEN);
|
||||||
descs[j] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
|
descs[j] = LADSPA_PORT_INPUT | LADSPA_PORT_CONTROL;
|
||||||
|
|
||||||
hints[j].LowerBound = p->min;
|
hints[j].LowerBound = p->min;
|
||||||
|
@ -164,10 +170,13 @@ struct LADSPA_Plugin : public T {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
TEMPLATE Param LADSPA_Plugin<T>::default_params[T::parameters];
|
#define P LADSPA_Plugin<T>
|
||||||
TEMPLATE LADSPA_PortDescriptor LADSPA_Plugin<T>::descs[IO_PLUGS + T::parameters];
|
TEMPLATE Param P::default_params[T::parameters];
|
||||||
TEMPLATE LADSPA_PortRangeHint LADSPA_Plugin<T>::hints[IO_PLUGS + T::parameters];
|
TEMPLATE LADSPA_PortDescriptor P::descs[P::portcount];
|
||||||
TEMPLATE char LADSPA_Plugin<T>::names[IO_PLUGS + T::parameters][PARAM_NAME_LEN + 1];
|
TEMPLATE LADSPA_PortRangeHint P::hints[P::portcount];
|
||||||
|
TEMPLATE char* P::names[P::portcount];
|
||||||
|
TEMPLATE char P::name_buffer[P::portcount][PARAM_NAME_LEN];
|
||||||
|
#undef P
|
||||||
|
|
||||||
TEMPLATE static
|
TEMPLATE static
|
||||||
LADSPA_Descriptor gen_desc() {
|
LADSPA_Descriptor gen_desc() {
|
||||||
|
@ -179,7 +188,7 @@ LADSPA_Descriptor gen_desc() {
|
||||||
.Name = T::name,
|
.Name = T::name,
|
||||||
.Maker = T::author,
|
.Maker = T::author,
|
||||||
.Copyright = T::copyright,
|
.Copyright = T::copyright,
|
||||||
.PortCount = IO_PLUGS + T::parameters,
|
.PortCount = T::portcount,
|
||||||
.PortDescriptors = T::descs,
|
.PortDescriptors = T::descs,
|
||||||
.PortRangeHints = T::hints,
|
.PortRangeHints = T::hints,
|
||||||
.PortNames = (const char *const *) T::names,
|
.PortNames = (const char *const *) T::names,
|
||||||
|
|
Loading…
Add table
Reference in a new issue