diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-29 05:56:22 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-29 05:56:22 +0000 |
commit | 45155d7f2d79e174501b70b9860aae2ee9ab70cc (patch) | |
tree | 7a028a03b63f50917e7081dff14b47c381b35c10 /cc | |
parent | b0b99737002b9c02e3fd2e25eaa366f3a6a882c2 (diff) | |
download | chromium_src-45155d7f2d79e174501b70b9860aae2ee9ab70cc.zip chromium_src-45155d7f2d79e174501b70b9860aae2ee9ab70cc.tar.gz chromium_src-45155d7f2d79e174501b70b9860aae2ee9ab70cc.tar.bz2 |
cc: Don't AllocateForTesting() in the HUD layer.
This has resolved itself and doesn't need to be done anymore to
avoid DCHECKs. Now we call SetPixels() every frame before we draw
the layer, so it is always initialized.
TBR=epenner
BUG=166784
Review URL: https://chromiumcodereview.appspot.com/13281002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@191311 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc')
-rw-r--r-- | cc/layers/heads_up_display_layer_impl.cc | 35 | ||||
-rw-r--r-- | cc/layers/heads_up_display_layer_impl.h | 2 |
2 files changed, 16 insertions, 21 deletions
diff --git a/cc/layers/heads_up_display_layer_impl.cc b/cc/layers/heads_up_display_layer_impl.cc index 270e04d..5c99e2e 100644 --- a/cc/layers/heads_up_display_layer_impl.cc +++ b/cc/layers/heads_up_display_layer_impl.cc @@ -84,32 +84,27 @@ scoped_ptr<LayerImpl> HeadsUpDisplayLayerImpl::CreateLayerImpl( void HeadsUpDisplayLayerImpl::WillDraw(ResourceProvider* resource_provider) { LayerImpl::WillDraw(resource_provider); - if (!hud_texture_) - hud_texture_ = ScopedResource::create(resource_provider); + if (!hud_resource_) + hud_resource_ = ScopedResource::create(resource_provider); // TODO(danakj): Scale the HUD by device scale to make it more friendly under // high DPI. // TODO(danakj): The HUD could swap between two textures instead of creating a // texture every frame in ubercompositor. - if (hud_texture_->size() != bounds() || - resource_provider->InUseByConsumer(hud_texture_->id())) - hud_texture_->Free(); + if (hud_resource_->size() != bounds() || + resource_provider->InUseByConsumer(hud_resource_->id())) + hud_resource_->Free(); - if (!hud_texture_->id()) { - hud_texture_->Allocate( + if (!hud_resource_->id()) { + hud_resource_->Allocate( bounds(), GL_RGBA, ResourceProvider::TextureUsageAny); - // TODO(epenner): This texture was being used before SetPixels was called, - // which is now not allowed (it's an uninitialized read). This should be - // fixed and this allocateForTesting() removed. - // http://crbug.com/166784 - resource_provider->AllocateForTesting(hud_texture_->id()); } } void HeadsUpDisplayLayerImpl::AppendQuads(QuadSink* quad_sink, AppendQuadsData* append_quads_data) { - if (!hud_texture_->id()) + if (!hud_resource_->id()) return; SharedQuadState* shared_quad_state = @@ -126,7 +121,7 @@ void HeadsUpDisplayLayerImpl::AppendQuads(QuadSink* quad_sink, quad->SetNew(shared_quad_state, quad_rect, opaque_rect, - hud_texture_->id(), + hud_resource_->id(), premultiplied_alpha, uv_top_left, uv_bottom_right, @@ -137,7 +132,7 @@ void HeadsUpDisplayLayerImpl::AppendQuads(QuadSink* quad_sink, void HeadsUpDisplayLayerImpl::UpdateHudTexture( ResourceProvider* resource_provider) { - if (!hud_texture_->id()) + if (!hud_resource_->id()) return; SkISize canvas_size; @@ -163,7 +158,7 @@ void HeadsUpDisplayLayerImpl::UpdateHudTexture( gfx::Rect layer_rect(bounds()); DCHECK(bitmap->config() == SkBitmap::kARGB_8888_Config); - resource_provider->SetPixels(hud_texture_->id(), + resource_provider->SetPixels(hud_resource_->id(), static_cast<const uint8_t*>(bitmap->getPixels()), layer_rect, layer_rect, @@ -173,16 +168,16 @@ void HeadsUpDisplayLayerImpl::UpdateHudTexture( void HeadsUpDisplayLayerImpl::DidDraw(ResourceProvider* resource_provider) { LayerImpl::DidDraw(resource_provider); - if (!hud_texture_->id()) + if (!hud_resource_->id()) return; // FIXME: the following assert will not be true when sending resources to a - // parent compositor. We will probably need to hold on to hud_texture_ for + // parent compositor. We will probably need to hold on to hud_resource_ for // longer, and have several HUD textures in the pipeline. - DCHECK(!resource_provider->InUseByConsumer(hud_texture_->id())); + DCHECK(!resource_provider->InUseByConsumer(hud_resource_->id())); } -void HeadsUpDisplayLayerImpl::DidLoseOutputSurface() { hud_texture_.reset(); } +void HeadsUpDisplayLayerImpl::DidLoseOutputSurface() { hud_resource_.reset(); } bool HeadsUpDisplayLayerImpl::LayerIsAlwaysDamaged() const { return true; } diff --git a/cc/layers/heads_up_display_layer_impl.h b/cc/layers/heads_up_display_layer_impl.h index 0940dea..7e7f2df 100644 --- a/cc/layers/heads_up_display_layer_impl.h +++ b/cc/layers/heads_up_display_layer_impl.h @@ -109,7 +109,7 @@ class CC_EXPORT HeadsUpDisplayLayerImpl : public LayerImpl { void DrawDebugRects(SkCanvas* canvas, DebugRectHistory* debug_rect_history) const; - scoped_ptr<ScopedResource> hud_texture_; + scoped_ptr<ScopedResource> hud_resource_; scoped_ptr<SkCanvas> hud_canvas_; skia::RefPtr<SkTypeface> typeface_; |