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

Unified Diff: ui/compositor/compositor.cc

Issue 10689108: Aura: Have ui::Layer implement WebKit::WebExternalTextureLayerClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Wait for commit before fast ACKing on resize. Created 8 years, 5 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: ui/compositor/compositor.cc
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index 148a5bd28c782ebc0a5ebac6fa65742d4d092717..2d96b80f4d89527a853daa63df9ea53a079e2022 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -162,6 +162,9 @@ Compositor::Compositor(CompositorDelegate* delegate,
}
Compositor::~Compositor() {
+ // Clear out any pending callbacks.
+ didCommit();
+
// Don't call |CompositorDelegate::ScheduleDraw| from this point.
delegate_ = NULL;
// There's a cycle between |root_web_layer_| and |host_|, which results in
@@ -342,6 +345,15 @@ WebKit::WebGraphicsContext3D* Compositor::createContext3D() {
void Compositor::didRebindGraphicsContext(bool success) {
}
+void Compositor::didCommit() {
piman 2012/07/09 22:40:01 Can you add a comment that this is only called in
jonathan.backer 2012/07/11 21:02:03 I was wrong. It's not. But it's only called during
+ for (std::vector< base::Callback<void(Compositor*)> >::const_iterator
+ it = did_commit_callbacks_.begin();
+ it != did_commit_callbacks_.end(); ++it) {
+ it->Run(this);
+ }
+ did_commit_callbacks_.clear();
+}
+
void Compositor::didCommitAndDrawFrame() {
// TODO(backer): Plumb through an earlier impl side will start.
if (g_compositor_thread)
@@ -363,6 +375,14 @@ void Compositor::scheduleComposite() {
ScheduleDraw();
}
+void Compositor::AddDidCommitCallback(
+ const base::Callback<void(ui::Compositor*)>& callback) {
+ if (g_compositor_thread)
+ did_commit_callbacks_.push_back(callback);
+ else
+ callback.Run(this);
+}
+
void Compositor::SwizzleRGBAToBGRAAndFlip(unsigned char* pixels,
const gfx::Size& image_size) {
// Swizzle from RGBA to BGRA

Powered by Google App Engine
This is Rietveld 408576698