{{+bindTo:partials.standard_nacl_article}}
PP_ArrayOutput_GetDataBuffer | GetDataBuffer |
void * | user_data |
A structure that defines a way for the browser to return arrays of data to the plugin.
The browser can not allocate memory on behalf of the plugin because the plugin and browser may have different allocators.
Array output works by having the browser call to the plugin to allocate a buffer, and then the browser will copy the contents of the array into that buffer.
In C, you would typically implement this as follows:
struct MyArrayOutput { void* data; int element_count; }; void* MyGetDataBuffer(void* user_data, uint32_t count, uint32_t size) { MyArrayOutput* output = (MyArrayOutput*)user_data; output->element_count = count; if (size) { output->data = malloc(count * size); if (!output->data) // Be careful to set size properly on malloc failure. output->element_count = 0; } else { output->data = NULL; } return output->data; } void MyFunction() { MyArrayOutput array = { NULL, 0 }; PP_ArrayOutput output = { &MyGetDataBuffer, &array }; ppb_foo->GetData(&output); }
A pointer to the allocation function that the browser will call.
Data that is passed to the allocation function.
Typically, this is used to communicate how the data should be stored.