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

Side by Side Diff: Source/WebCore/platform/graphics/chromium/TiledLayerChromium.cpp

Issue 10146014: Merge 113677 - [chromium] Viewport is not filled when out of texture memory on mac (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1084/
Patch Set: Created 8 years, 8 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Google Inc. All rights reserved. 2 * Copyright (C) 2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 437 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 tile->m_partialUpdate = true; 448 tile->m_partialUpdate = true;
449 else if (tileNeedsBufferedUpdate(tile) && layerTreeHost()) { 449 else if (tileNeedsBufferedUpdate(tile) && layerTreeHost()) {
450 layerTreeHost()->deleteTextureAfterCommit(tile->managedTexture() ->steal()); 450 layerTreeHost()->deleteTextureAfterCommit(tile->managedTexture() ->steal());
451 // Sets the dirty rect to a full-sized tile with border texels. 451 // Sets the dirty rect to a full-sized tile with border texels.
452 tile->m_dirtyRect = m_tiler->tileRect(tile); 452 tile->m_dirtyRect = m_tiler->tileRect(tile);
453 } 453 }
454 454
455 if (!tile->managedTexture()->reserve(m_tiler->tileSize(), m_textureF ormat)) { 455 if (!tile->managedTexture()->reserve(m_tiler->tileSize(), m_textureF ormat)) {
456 m_skipsIdlePaint = true; 456 m_skipsIdlePaint = true;
457 if (!idle) { 457 if (!idle) {
458 // If the background covers the viewport, always draw this 458 m_skipsDraw = true;
459 // layer so that checkerboarded tiles will still draw.
460 if (!backgroundCoversViewport())
461 m_skipsDraw = true;
462 m_tiler->reset(); 459 m_tiler->reset();
463 m_paintRect = IntRect(); 460 m_paintRect = IntRect();
464 m_requestedUpdateTilesRect = IntRect(); 461 m_requestedUpdateTilesRect = IntRect();
465 } 462 }
466 return; 463 return;
467 } 464 }
468 465
469 dirtyLayerRect.unite(tile->m_dirtyRect); 466 dirtyLayerRect.unite(tile->m_dirtyRect);
470 } 467 }
471 } 468 }
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
575 if (!tile->managedTexture()->reserve(m_tiler->tileSize(), m_textureF ormat)) 572 if (!tile->managedTexture()->reserve(m_tiler->tileSize(), m_textureF ormat))
576 return; 573 return;
577 } 574 }
578 } 575 }
579 } 576 }
580 577
581 Region TiledLayerChromium::visibleContentOpaqueRegion() const 578 Region TiledLayerChromium::visibleContentOpaqueRegion() const
582 { 579 {
583 if (m_skipsDraw) 580 if (m_skipsDraw)
584 return Region(); 581 return Region();
585 582 if (opaque())
583 return visibleLayerRect();
586 return m_tiler->opaqueRegionInLayerRect(visibleLayerRect()); 584 return m_tiler->opaqueRegionInLayerRect(visibleLayerRect());
587 } 585 }
588 586
589 void TiledLayerChromium::resetUpdateState() 587 void TiledLayerChromium::resetUpdateState()
590 { 588 {
591 // Reset m_updateRect for all tiles. 589 // Reset m_updateRect for all tiles.
592 CCLayerTilingData::TileMap::const_iterator end = m_tiler->tiles().end(); 590 CCLayerTilingData::TileMap::const_iterator end = m_tiler->tiles().end();
593 for (CCLayerTilingData::TileMap::const_iterator iter = m_tiler->tiles().begi n(); iter != end; ++iter) { 591 for (CCLayerTilingData::TileMap::const_iterator iter = m_tiler->tiles().begi n(); iter != end; ++iter) {
594 UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second.get()); 592 UpdatableTile* tile = static_cast<UpdatableTile*>(iter->second.get());
595 tile->m_updateRect = IntRect(); 593 tile->m_updateRect = IntRect();
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
742 // - only reserve idle paint tiles up to a memory reclaim threshold and 740 // - only reserve idle paint tiles up to a memory reclaim threshold and
743 // - insure we play nicely with other layers 741 // - insure we play nicely with other layers
744 prepaintRect.inflateX(m_tiler->tileSize().width()); 742 prepaintRect.inflateX(m_tiler->tileSize().width());
745 prepaintRect.inflateY(m_tiler->tileSize().height()); 743 prepaintRect.inflateY(m_tiler->tileSize().height());
746 prepaintRect.intersect(IntRect(IntPoint::zero(), contentBounds())); 744 prepaintRect.intersect(IntRect(IntPoint::zero(), contentBounds()));
747 return prepaintRect; 745 return prepaintRect;
748 } 746 }
749 747
750 } 748 }
751 #endif // USE(ACCELERATED_COMPOSITING) 749 #endif // USE(ACCELERATED_COMPOSITING)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698