OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/renderer_host/accelerated_surface_container_mac.h" | 5 #include "chrome/browser/renderer_host/accelerated_surface_container_mac.h" |
6 | 6 |
7 #include "app/surface/io_surface_support_mac.h" | 7 #include "app/surface/io_surface_support_mac.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "chrome/browser/renderer_host/accelerated_surface_container_manager_mac
.h" | 9 #include "chrome/browser/renderer_host/accelerated_surface_container_manager_mac
.h" |
10 #include "webkit/glue/plugins/webplugin.h" | 10 #include "webkit/glue/plugins/webplugin.h" |
11 | 11 |
12 AcceleratedSurfaceContainerMac::AcceleratedSurfaceContainerMac( | 12 AcceleratedSurfaceContainerMac::AcceleratedSurfaceContainerMac( |
13 AcceleratedSurfaceContainerManagerMac* manager, | 13 AcceleratedSurfaceContainerManagerMac* manager, |
14 bool opaque) | 14 bool opaque) |
15 : manager_(manager), | 15 : manager_(manager), |
16 opaque_(opaque), | 16 opaque_(opaque), |
| 17 surface_id_(0), |
17 width_(0), | 18 width_(0), |
18 height_(0), | 19 height_(0), |
19 texture_(0), | 20 texture_(0), |
20 texture_needs_upload_(true), | 21 texture_needs_upload_(true), |
21 texture_pending_deletion_(0), | 22 texture_pending_deletion_(0), |
22 visible_(false), | 23 visible_(false), |
23 was_painted_to_(false) { | 24 was_painted_to_(false) { |
24 } | 25 } |
25 | 26 |
26 AcceleratedSurfaceContainerMac::~AcceleratedSurfaceContainerMac() { | 27 AcceleratedSurfaceContainerMac::~AcceleratedSurfaceContainerMac() { |
27 } | 28 } |
28 | 29 |
29 void AcceleratedSurfaceContainerMac::SetSizeAndIOSurface( | 30 void AcceleratedSurfaceContainerMac::SetSizeAndIOSurface( |
30 int32 width, | 31 int32 width, |
31 int32 height, | 32 int32 height, |
32 uint64 io_surface_identifier) { | 33 uint64 io_surface_identifier) { |
33 surface_.reset(); | 34 surface_.reset(); |
| 35 surface_id_ = 0; |
34 IOSurfaceSupport* io_surface_support = IOSurfaceSupport::Initialize(); | 36 IOSurfaceSupport* io_surface_support = IOSurfaceSupport::Initialize(); |
35 if (io_surface_support) { | 37 if (io_surface_support) { |
36 surface_.reset(io_surface_support->IOSurfaceLookup( | 38 surface_.reset(io_surface_support->IOSurfaceLookup( |
37 static_cast<uint32>(io_surface_identifier))); | 39 static_cast<uint32>(io_surface_identifier))); |
| 40 if (surface_.get()) |
| 41 surface_id_ = io_surface_identifier; |
38 EnqueueTextureForDeletion(); | 42 EnqueueTextureForDeletion(); |
39 width_ = width; | 43 width_ = width; |
40 height_ = height; | 44 height_ = height; |
41 } | 45 } |
42 } | 46 } |
43 | 47 |
44 void AcceleratedSurfaceContainerMac::SetSizeAndTransportDIB( | 48 void AcceleratedSurfaceContainerMac::SetSizeAndTransportDIB( |
45 int32 width, | 49 int32 width, |
46 int32 height, | 50 int32 height, |
47 TransportDIB::Handle transport_dib) { | 51 TransportDIB::Handle transport_dib) { |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
185 glVertex3f(0, clipHeight, 0); | 189 glVertex3f(0, clipHeight, 0); |
186 | 190 |
187 glTexCoord2f(clipX + clipWidth, height_ - clipY - clipHeight); | 191 glTexCoord2f(clipX + clipWidth, height_ - clipY - clipHeight); |
188 glVertex3f(clipWidth, clipHeight, 0); | 192 glVertex3f(clipWidth, clipHeight, 0); |
189 | 193 |
190 glEnd(); | 194 glEnd(); |
191 glDisable(target); | 195 glDisable(target); |
192 } | 196 } |
193 } | 197 } |
194 | 198 |
| 199 void AcceleratedSurfaceContainerMac::set_was_painted_to(uint64 surface_id) { |
| 200 if (surface_id) { |
| 201 // Check that only the most current IOSurface allocated for this container |
| 202 // is painted to. |
| 203 DCHECK(surface_); |
| 204 DCHECK_EQ(surface_id, surface_id_); |
| 205 } |
| 206 was_painted_to_ = true; |
| 207 } |
| 208 |
195 void AcceleratedSurfaceContainerMac::EnqueueTextureForDeletion() { | 209 void AcceleratedSurfaceContainerMac::EnqueueTextureForDeletion() { |
196 if (texture_) { | 210 if (texture_) { |
197 DCHECK(texture_pending_deletion_ == 0); | 211 DCHECK(texture_pending_deletion_ == 0); |
198 texture_pending_deletion_ = texture_; | 212 texture_pending_deletion_ = texture_; |
199 texture_ = 0; | 213 texture_ = 0; |
200 } | 214 } |
201 } | 215 } |
202 | 216 |
OLD | NEW |