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

Unified Diff: compositor/gles/opengles_visitor.cc

Issue 6793005: Add the xrender backend to the window manager. (Closed) Base URL: ssh://gitrw.chromium.org:9222/window_manager.git@master
Patch Set: Address fourth round of comments. Created 9 years, 9 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
« no previous file with comments | « compositor/gles/opengles_visitor.h ('k') | compositor/real_compositor.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: compositor/gles/opengles_visitor.cc
diff --git a/compositor/gles/opengles_visitor.cc b/compositor/gles/opengles_visitor.cc
index ffebe59417208d9344176c987e3bd7158de15ff2..e703f93cf85345a1d0169fcd13960079b2201618 100644
--- a/compositor/gles/opengles_visitor.cc
+++ b/compositor/gles/opengles_visitor.cc
@@ -141,13 +141,13 @@ OpenGlesDrawVisitor::~OpenGlesDrawVisitor() {
<< "eglDestroyCotnext() failed: " << eglGetError();
}
-void OpenGlesDrawVisitor::BindImage(const ImageContainer* container,
+void OpenGlesDrawVisitor::BindImage(const ImageContainer& container,
RealCompositor::QuadActor* actor) {
- // TODO: Check container->format() and use a shader to swizzle BGR
+ // TODO: Check container.format() and use a shader to swizzle BGR
// data into RGB.
GLenum gl_format = 0;
GLenum gl_type = 0;
- switch (container->format()) {
+ switch (container.format()) {
case IMAGE_FORMAT_RGBA_32:
case IMAGE_FORMAT_RGBX_32:
gl_format = GL_RGBA;
@@ -177,12 +177,12 @@ void OpenGlesDrawVisitor::BindImage(const ImageContainer* container,
gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
gl_->TexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
gl_->TexImage2D(GL_TEXTURE_2D, 0, gl_format,
- container->width(), container->height(),
- 0, gl_format, gl_type, container->data());
+ container.width(), container.height(),
+ 0, gl_format, gl_type, container.data());
scoped_ptr<OpenGlesTextureData> data(new OpenGlesTextureData(gl_));
data->SetTexture(texture);
- data->set_has_alpha(ImageFormatUsesAlpha(container->format()));
+ data->set_has_alpha(ImageFormatUsesAlpha(container.format()));
actor->set_texture_data(data.release());
}
@@ -260,16 +260,30 @@ void OpenGlesDrawVisitor::VisitStage(RealCompositor::StageActor* actor) {
}
}
-void OpenGlesDrawVisitor::CreateTextureData(
- RealCompositor::TexturePixmapActor* actor) const {
- OpenGlesEglImageData image_data(gl_);
-
- if (!image_data.Bind(actor))
+void OpenGlesDrawVisitor::VisitContainer(
+ RealCompositor::ContainerActor* actor) {
+ if (!actor->IsVisible())
return;
- scoped_ptr<OpenGlesTextureData> texture(new OpenGlesTextureData(gl_));
- image_data.BindTexture(texture.get(), !actor->pixmap_is_opaque());
- actor->set_texture_data(texture.release());
+ LOG(INFO) << "Visit container: " << actor->name();
+
+ const float original_opacity = ancestor_opacity_;
+ ancestor_opacity_ *= actor->opacity();
+
+ // Back to front rendering
+ const RealCompositor::ActorVector children = actor->GetChildren();
+ for (RealCompositor::ActorVector::const_reverse_iterator i =
+ children.rbegin(); i != children.rend(); ++i) {
+ // TODO move this down into the Visit* functions
+ if ((*i)->is_opaque() && (*i)->opacity() * ancestor_opacity_ > 0.999)
+ gl_->Disable(GL_BLEND);
+ else
+ gl_->Enable(GL_BLEND);
+ (*i)->Accept(this);
+ }
+
+ // Reset opacity.
+ ancestor_opacity_ = original_opacity;
}
void OpenGlesDrawVisitor::VisitImage(RealCompositor::ImageActor* actor) {
@@ -443,6 +457,18 @@ void OpenGlesDrawVisitor::DrawQuad(RealCompositor::QuadActor* actor,
}
}
+void OpenGlesDrawVisitor::CreateTextureData(
+ RealCompositor::TexturePixmapActor* actor) const {
+ OpenGlesEglImageData image_data(gl_);
+
+ if (!image_data.Bind(actor))
+ return;
+
+ scoped_ptr<OpenGlesTextureData> texture(new OpenGlesTextureData(gl_));
+ image_data.BindTexture(texture.get(), !actor->pixmap_is_opaque());
+ actor->set_texture_data(texture.release());
+}
+
void OpenGlesDrawVisitor::PushScissorRect(const Rect& scissor) {
if (scissor_stack_.empty()) {
scissor_stack_.push_back(scissor);
@@ -471,32 +497,6 @@ void OpenGlesDrawVisitor::PopScissorRect() {
}
}
-void OpenGlesDrawVisitor::VisitContainer(
- RealCompositor::ContainerActor* actor) {
- if (!actor->IsVisible())
- return;
-
- LOG(INFO) << "Visit container: " << actor->name();
-
- const float original_opacity = ancestor_opacity_;
- ancestor_opacity_ *= actor->opacity();
-
- // Back to front rendering
- const RealCompositor::ActorVector children = actor->GetChildren();
- for (RealCompositor::ActorVector::const_reverse_iterator i =
- children.rbegin(); i != children.rend(); ++i) {
- // TODO move this down into the Visit* functions
- if ((*i)->is_opaque() && (*i)->opacity() * ancestor_opacity_ > 0.999)
- gl_->Disable(GL_BLEND);
- else
- gl_->Enable(GL_BLEND);
- (*i)->Accept(this);
- }
-
- // Reset opacity.
- ancestor_opacity_ = original_opacity;
-}
-
OpenGlesTextureData::OpenGlesTextureData(Gles2Interface* gl)
: gl_(gl) {}
« no previous file with comments | « compositor/gles/opengles_visitor.h ('k') | compositor/real_compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698