PPB_Compositor Struct Reference

Data Fields

PP_Bool(* IsCompositor )(PP_Resource resource)
PP_Resource(* Create )(PP_Instance instance)
PP_Resource(* AddLayer )(PP_Resource compositor)
int32_t(* CommitLayers )(PP_Resource compositor, struct PP_CompletionCallback cc)
int32_t(* ResetLayers )(PP_Resource compositor)

Detailed Description

Defines the PPB_Compositor interface.

Used for setting PPB_CompositorLayer layers to the Chromium compositor for compositing. This allows a plugin to combine different sources of visual data efficiently, such as PPB_ImageData images and OpenGL textures. See also PPB_CompositorLayer for more information. This interface is still in development (Dev API status) and may change, so is only supported on Dev channel and Canary currently.

Example usage from plugin code:

Setup:

 PP_Resource compositor;
 compositor = compositor_if->Create(instance);
 instance_if->BindGraphics(instance, compositor);

Setup layer stack:

 PP_Resource color_layer = compositor_if->AddLayer(compositor);
 PP_Resource texture_layer = compositor_if->AddLayer(compositor);

Present one frame: layer_if->SetColor(color_layer, 255, 255, 0, 255, PP_MakeSize(400, 400)); PP_CompletionCallback release_callback = { TextureReleasedCallback, 0, PP_COMPLETIONCALLBACK_FLAG_NONE, }; layer_if->SetTexture(texture_layer, graphics3d, texture_id, PP_MakeSize(300, 300), release_callback);

PP_CompletionCallback callback = { DidFinishCommitLayersCallback, (void*) texture_id, PP_COMPLETIONCALLBACK_FLAG_NONE, }; compositor_if->CommitLayers(compositor, callback);

release callback void ReleaseCallback(int32_t result, void* user_data) { if (result == PP_OK) { uint32_t texture_id = (uint32_t) user_data; // reuse the texture or delete it. } }

Shutdown:

 core->ReleaseResource(color_layer);
 core->ReleaseResource(texture_layer);
 core->ReleaseResource(compositor);

Field Documentation

Creates a new PPB_CompositorLayer and adds it to the end of the layer stack.

A PP_Resource containing the layer is returned. It is uninitialized, SetColor(), SetTexture or SetImage should be used to initialize it. The layer will appear above other pre-existing layers. If ResetLayers is called or the PPB_Compositor is released, the returned layer will be invalidated, and any further calls on the layer will return PP_ERROR_BADRESOURCE.

param[in] compositor A PP_Resource corresponding to a compositor layer resource.

Returns:
A PP_Resource containing the compositor layer resource if successful or 0 otherwise.

Commits layers added by AddLayer() to the chromium compositor.

param[in] compositor A PP_Resource corresponding to a compositor layer resource.

Parameters:
[in]ccA PP_CompletionCallback to be called when layers have been represented on screen.
Returns:
An int32_t containing a result code from pp_errors.h.

Creates a Compositor resource.

Parameters:
[in]instanceA PP_Instance identifying one instance of a module.
Returns:
A PP_Resource containing the compositor resource if successful or 0 otherwise.

Determines if a resource is a compositor resource.

Parameters:
[in]resourceThe PP_Resource to test.
Returns:
A PP_Bool with PP_TRUE if the given resource is a compositor resource or PP_FALSE otherwise.
int32_t(* PPB_Compositor::ResetLayers)(PP_Resource compositor)

Resets layers added by AddLayer().

param[in] compositor A PP_Resource corresponding to a compositor layer resource.

Returns:
An int32_t containing a result code from pp_errors.h.

The documentation for this struct was generated from the following file: