Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(183)

Unified Diff: ppapi/examples/compositor/compositor.cc

Issue 324983005: [PPAPI] Add browser tests for compositor API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@compositor_api_impl_new
Patch Set: Rebase Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ppapi/examples/compositor/compositor.cc
diff --git a/ppapi/examples/compositor/compositor.cc b/ppapi/examples/compositor/compositor.cc
index d437bc84b77aa894aafa3d744986be980d43a7fc..ccb93be2f73ec38c0ce46365d119014ea995fe01 100644
--- a/ppapi/examples/compositor/compositor.cc
+++ b/ppapi/examples/compositor/compositor.cc
@@ -72,6 +72,7 @@ class DemoInstance : public pp::Instance, public pp::Graphics3DClient {
void InitGL(int32_t result);
GLuint PrepareFramebuffer();
pp::ImageData PrepareImage();
+ void PrepareLayers(int32_t frame);
void Paint(int32_t result, int32_t frame);
void OnTextureReleased(int32_t result, GLuint texture);
void OnImageReleased(int32_t result, const pp::ImageData& image);
@@ -106,8 +107,7 @@ DemoInstance::DemoInstance(PP_Instance instance)
context_(NULL),
fbo_(0),
rbo_(0),
- compositor_(this),
- rebuild_layers_(false),
+ rebuild_layers_(true),
total_resource_(0),
cube_(new SpinningCube()) {
RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE);
@@ -147,11 +147,7 @@ bool DemoInstance::HandleInputEvent(const pp::InputEvent& event) {
void DemoInstance::Graphics3DContextLost() {
fbo_ = 0;
rbo_ = 0;
- compositor_.ResetLayers();
- color_layer_ = pp::CompositorLayer();
- stable_texture_layer_ = pp::CompositorLayer();
- texture_layer_ = pp::CompositorLayer();
- image_layer_ = pp::CompositorLayer();
+ rebuild_layers_ = true;
total_resource_ -= static_cast<int32_t>(textures_.size());
textures_.clear();
delete context_;
@@ -260,14 +256,12 @@ pp::ImageData DemoInstance::PrepareImage() {
void DemoInstance::Paint(int32_t result, int32_t frame) {
assert(result == PP_OK);
-
if (result != PP_OK || !context_)
return;
- int32_t rv;
-
if (rebuild_layers_) {
- compositor_.ResetLayers();
+ compositor_ = pp::Compositor(this);
+ assert(BindGraphics(compositor_));
color_layer_ = pp::CompositorLayer();
stable_texture_layer_ = pp::CompositorLayer();
texture_layer_ = pp::CompositorLayer();
@@ -276,6 +270,21 @@ void DemoInstance::Paint(int32_t result, int32_t frame) {
rebuild_layers_ = false;
}
+ PrepareLayers(frame);
+
+ int32_t rv = compositor_.CommitLayers(
+ callback_factory_.NewCallback(&DemoInstance::Paint, ++frame));
+ assert(rv == PP_OK_COMPLETIONPENDING);
+
+ pp::VarDictionary dict;
+ dict.Set("total_resource", total_resource_);
+ size_t free_resource = textures_.size() + images_.size();
+ dict.Set("free_resource", static_cast<int32_t>(free_resource));
+ PostMessage(dict);
+}
+
+void DemoInstance::PrepareLayers(int32_t frame) {
+ int32_t rv;
float factor_sin = sin(M_PI / 180 * frame);
float factor_cos = cos(M_PI / 180 * frame);
{
@@ -395,16 +404,6 @@ void DemoInstance::Paint(int32_t result, int32_t frame) {
rv = texture_layer_.SetPremultipliedAlpha(PP_FALSE);
assert(rv == PP_OK);
}
-
- rv = compositor_.CommitLayers(
- callback_factory_.NewCallback(&DemoInstance::Paint, ++frame));
- assert(rv == PP_OK_COMPLETIONPENDING);
-
- pp::VarDictionary dict;
- dict.Set(pp::Var("total_resource"), pp::Var(total_resource_));
- dict.Set(pp::Var("free_resource"),
- pp::Var((int32_t)(textures_.size() + images_.size())));
- PostMessage(dict);
}
void DemoInstance::OnTextureReleased(int32_t result, GLuint texture) {

Powered by Google App Engine
This is Rietveld 408576698