diff options
Diffstat (limited to 'ppapi/cpp/dev/resource_array_dev.h')
-rw-r--r-- | ppapi/cpp/dev/resource_array_dev.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/ppapi/cpp/dev/resource_array_dev.h b/ppapi/cpp/dev/resource_array_dev.h index 9d9635c..f9daf5f 100644 --- a/ppapi/cpp/dev/resource_array_dev.h +++ b/ppapi/cpp/dev/resource_array_dev.h @@ -5,6 +5,8 @@ #ifndef PPAPI_CPP_DEV_RESOURCE_ARRAY_DEV_H_ #define PPAPI_CPP_DEV_RESOURCE_ARRAY_DEV_H_ +#include "ppapi/c/pp_array_output.h" +#include "ppapi/c/pp_completion_callback.h" #include "ppapi/c/pp_stdint.h" #include "ppapi/cpp/resource.h" @@ -14,6 +16,21 @@ class InstanceHandle; class ResourceArray_Dev : public Resource { public: + // Heap-allocated data passed to ArrayOutputCallbackConverter(). Please see + // the comment of ArrayOutputCallbackConverter() for more details. + struct ArrayOutputCallbackData { + ArrayOutputCallbackData(const PP_ArrayOutput& array_output, + const PP_CompletionCallback& callback) + : resource_array_output(0), + output(array_output), + original_callback(callback) { + } + + PP_Resource resource_array_output; + PP_ArrayOutput output; + PP_CompletionCallback original_callback; + }; + ResourceArray_Dev(); ResourceArray_Dev(PassRef, PP_Resource resource); @@ -31,6 +48,22 @@ class ResourceArray_Dev : public Resource { uint32_t size() const; PP_Resource operator[](uint32_t index) const; + + // This is an adapter for backward compatibility. It works with those APIs + // which take a PPB_ResourceArray_Dev resource as output parameter, and + // returns results using PP_ArrayOutput. For example: + // + // ResourceArray_Dev::ArrayOutputCallbackData* data = + // new ResourceArray_Dev::ArrayOutputCallbackData( + // pp_array_output, callback); + // ppb_foo->Bar( + // foo_resource, &data->resource_array_output, + // PP_MakeCompletionCallback( + // &ResourceArray_Dev::ArrayOutputCallbackConverter, data)); + // + // It takes a heap-allocated ArrayOutputCallbackData struct passed as the user + // data, and deletes it when the call completes. + static void ArrayOutputCallbackConverter(void* user_data, int32_t result); }; } // namespace pp |