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

Unified Diff: chrome/browser/renderer_host/accelerated_surface_container_mac.cc

Issue 4142004: Let every "accelerated IO surface swapped" message have an identifier of the surface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments Created 10 years, 2 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: chrome/browser/renderer_host/accelerated_surface_container_mac.cc
diff --git a/chrome/browser/renderer_host/accelerated_surface_container_mac.cc b/chrome/browser/renderer_host/accelerated_surface_container_mac.cc
index 8d7ce75f5966d622ff7f088bd3d5fd2bda2baa32..ca2a6008f1f96d93c7e190cd408cd4dd7de0425f 100644
--- a/chrome/browser/renderer_host/accelerated_surface_container_mac.cc
+++ b/chrome/browser/renderer_host/accelerated_surface_container_mac.cc
@@ -14,6 +14,7 @@ AcceleratedSurfaceContainerMac::AcceleratedSurfaceContainerMac(
bool opaque)
: manager_(manager),
opaque_(opaque),
+ surface_id_(0),
width_(0),
height_(0),
texture_(0),
@@ -31,10 +32,13 @@ void AcceleratedSurfaceContainerMac::SetSizeAndIOSurface(
int32 height,
uint64 io_surface_identifier) {
surface_.reset();
+ surface_id_ = 0;
IOSurfaceSupport* io_surface_support = IOSurfaceSupport::Initialize();
if (io_surface_support) {
surface_.reset(io_surface_support->IOSurfaceLookup(
static_cast<uint32>(io_surface_identifier)));
+ if (surface_.get())
+ surface_id_ = io_surface_identifier;
EnqueueTextureForDeletion();
width_ = width;
height_ = height;
@@ -192,6 +196,16 @@ void AcceleratedSurfaceContainerMac::Draw(CGLContextObj context) {
}
}
+void AcceleratedSurfaceContainerMac::set_was_painted_to(uint64 surface_id) {
+ if (surface_id) {
+ // Check that only the most current IOSurface allocated for this container
+ // is painted to.
+ DCHECK(surface_);
+ DCHECK_EQ(surface_id, surface_id_);
+ }
+ was_painted_to_ = true;
+}
+
void AcceleratedSurfaceContainerMac::EnqueueTextureForDeletion() {
if (texture_) {
DCHECK(texture_pending_deletion_ == 0);

Powered by Google App Engine
This is Rietveld 408576698