status_t ESDSinkNode::GetConfigurationFor(BMessage * into_message) { CALLED(); BParameter *parameter = NULL; void *buffer; size_t size = 128; bigtime_t last_change; status_t err; if (!into_message) return B_BAD_VALUE; buffer = malloc(size); for(int32 i=0; i<fWeb->CountParameters(); i++) { parameter = fWeb->ParameterAt(i); if(parameter->Type() != BParameter::B_CONTINUOUS_PARAMETER && parameter->Type() != BParameter::B_DISCRETE_PARAMETER) continue; PRINT(("getting parameter %li\n", parameter->ID())); size = 128; while((err = GetParameterValue(parameter->ID(), &last_change, buffer, &size))==B_NO_MEMORY) { size += 128; free(buffer); buffer = malloc(size); } if(err == B_OK && size > 0) { into_message->AddInt32("parameterID", parameter->ID()); into_message->AddData("parameterData", B_RAW_TYPE, buffer, size, false); } else { PRINT(("parameter %li err : %s\n", parameter->ID(), strerror(err))); } } //PRINT_OBJECT(*into_message); return B_OK; }
static bool parameter_should_be_hidden(BParameter ¶meter) { // ToDo: note, this is probably completely stupid, but it's the only // way I could safely remove the null parameters that are not shown // by the R5 media theme if (parameter.Type() != BParameter::B_NULL_PARAMETER || strcmp(parameter.Kind(), B_WEB_PHYSICAL_INPUT)) return false; for (int32 i = 0; i < parameter.CountOutputs(); i++) { if (!strcmp(parameter.OutputAt(0)->Kind(), B_INPUT_MUX)) return true; } return false; }