| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "config.h" | 5 #include "config.h" |
| 6 #include "platform/graphics/paint/DrawingRecorder.h" | 6 #include "platform/graphics/paint/DrawingRecorder.h" |
| 7 | 7 |
| 8 #include "platform/RuntimeEnabledFeatures.h" | 8 #include "platform/RuntimeEnabledFeatures.h" |
| 9 #include "platform/graphics/GraphicsContext.h" | 9 #include "platform/graphics/GraphicsContext.h" |
| 10 #include "platform/graphics/GraphicsLayer.h" | 10 #include "platform/graphics/GraphicsLayer.h" |
| (...skipping 17 matching lines...) Expand all Loading... |
| 28 { | 28 { |
| 29 if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) | 29 if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) |
| 30 return; | 30 return; |
| 31 | 31 |
| 32 #if ENABLE(ASSERT) | 32 #if ENABLE(ASSERT) |
| 33 ASSERT(!s_inDrawingRecorder); | 33 ASSERT(!s_inDrawingRecorder); |
| 34 s_inDrawingRecorder = true; | 34 s_inDrawingRecorder = true; |
| 35 #endif | 35 #endif |
| 36 | 36 |
| 37 m_canUseCachedDrawing = context->displayItemList()->clientCacheIsValid(displ
ayItemClient); | 37 m_canUseCachedDrawing = context->displayItemList()->clientCacheIsValid(displ
ayItemClient); |
| 38 // FIXME: beginRecording only if !m_canUseCachedDrawing or ENABLE(ASSERT) | 38 #if ENABLE(ASSERT) |
| 39 // after all painters call canUseCachedDrawing(). | 39 // Enable recording to check if any painter is still doing unnecessary paint
ing when we can use cache. |
| 40 m_context->beginRecording(bounds); | 40 m_context->beginRecording(bounds); |
| 41 #else |
| 42 if (!m_canUseCachedDrawing) |
| 43 m_context->beginRecording(bounds); |
| 44 #endif |
| 41 } | 45 } |
| 42 | 46 |
| 43 DrawingRecorder::~DrawingRecorder() | 47 DrawingRecorder::~DrawingRecorder() |
| 44 { | 48 { |
| 45 if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) | 49 if (!RuntimeEnabledFeatures::slimmingPaintEnabled()) |
| 46 return; | 50 return; |
| 47 | 51 |
| 48 #if ENABLE(ASSERT) | 52 #if ENABLE(ASSERT) |
| 49 s_inDrawingRecorder = false; | 53 s_inDrawingRecorder = false; |
| 50 #endif | 54 #endif |
| 51 | 55 |
| 52 OwnPtr<DisplayItem> displayItem; | 56 OwnPtr<DisplayItem> displayItem; |
| 53 | 57 |
| 54 if (m_canUseCachedDrawing) { | 58 if (m_canUseCachedDrawing) { |
| 55 // FIXME: endRecording only if ENABLE(ASSERT), and enable the following
ASSERT | 59 #if ENABLE(ASSERT) |
| 56 // after all painters call canUseCachedDrawing(). | |
| 57 RefPtr<const SkPicture> picture = m_context->endRecording(); | 60 RefPtr<const SkPicture> picture = m_context->endRecording(); |
| 58 // ASSERT(!picture || !picture->approximateOpCount()); | 61 ASSERT(!picture || !picture->approximateOpCount()); |
| 62 #endif |
| 59 displayItem = CachedDisplayItem::create(m_displayItemClient, m_displayIt
emType); | 63 displayItem = CachedDisplayItem::create(m_displayItemClient, m_displayIt
emType); |
| 60 } else { | 64 } else { |
| 61 RefPtr<const SkPicture> picture = m_context->endRecording(); | 65 RefPtr<const SkPicture> picture = m_context->endRecording(); |
| 62 if (!picture || !picture->approximateOpCount()) | 66 if (!picture || !picture->approximateOpCount()) |
| 63 return; | 67 return; |
| 64 displayItem = DrawingDisplayItem::create(m_displayItemClient, m_displayI
temType, picture); | 68 displayItem = DrawingDisplayItem::create(m_displayItemClient, m_displayI
temType, picture); |
| 65 } | 69 } |
| 66 | 70 |
| 67 #ifndef NDEBUG | 71 #ifndef NDEBUG |
| 68 displayItem->setClientDebugString(m_clientDebugString); | 72 displayItem->setClientDebugString(m_clientDebugString); |
| 69 #endif | 73 #endif |
| 70 | 74 |
| 71 m_context->displayItemList()->add(displayItem.release()); | 75 m_context->displayItemList()->add(displayItem.release()); |
| 72 } | 76 } |
| 73 | 77 |
| 74 #ifndef NDEBUG | 78 #ifndef NDEBUG |
| 75 void DrawingRecorder::setClientDebugString(const WTF::String& clientDebugString) | 79 void DrawingRecorder::setClientDebugString(const WTF::String& clientDebugString) |
| 76 { | 80 { |
| 77 m_clientDebugString = clientDebugString; | 81 m_clientDebugString = clientDebugString; |
| 78 } | 82 } |
| 79 #endif | 83 #endif |
| 80 | 84 |
| 81 } // namespace blink | 85 } // namespace blink |
| OLD | NEW |