OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2009 Apple 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 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 if (offset == m_offsetFromLayoutObject) | 286 if (offset == m_offsetFromLayoutObject) |
287 return; | 287 return; |
288 | 288 |
289 m_offsetFromLayoutObject = offset; | 289 m_offsetFromLayoutObject = offset; |
290 | 290 |
291 // If the compositing layer offset changes, we need to repaint. | 291 // If the compositing layer offset changes, we need to repaint. |
292 if (shouldSetNeedsDisplay == SetNeedsDisplay) | 292 if (shouldSetNeedsDisplay == SetNeedsDisplay) |
293 setNeedsDisplay(); | 293 setNeedsDisplay(); |
294 } | 294 } |
295 | 295 |
296 void GraphicsLayer::paint(GraphicsContext& context, const IntRect* clip) | 296 void GraphicsLayer::paint(GraphicsContext& context, const IntRect* interestRect) |
297 { | 297 { |
298 ASSERT(clip || RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnab
led()); | 298 ASSERT(interestRect || RuntimeEnabledFeatures::slimmingPaintSynchronizedPain
tingEnabled()); |
299 ASSERT(drawsContent()); | 299 ASSERT(drawsContent()); |
300 | 300 |
301 if (!m_client) | 301 if (!m_client) |
302 return; | 302 return; |
303 if (firstPaintInvalidationTrackingEnabled()) | 303 if (firstPaintInvalidationTrackingEnabled()) |
304 m_debugInfo.clearAnnotatedInvalidateRects(); | 304 m_debugInfo.clearAnnotatedInvalidateRects(); |
305 incrementPaintCount(); | 305 incrementPaintCount(); |
306 #ifndef NDEBUG | 306 #ifndef NDEBUG |
307 if (m_paintController && contentsOpaque() && s_drawDebugRedFill) { | 307 if (m_paintController && contentsOpaque() && s_drawDebugRedFill) { |
308 FloatRect rect(FloatPoint(), size()); | 308 FloatRect rect(FloatPoint(), size()); |
309 if (!DrawingRecorder::useCachedDrawingIfPossible(context, *this, Display
Item::DebugRedFill)) { | 309 if (!DrawingRecorder::useCachedDrawingIfPossible(context, *this, Display
Item::DebugRedFill)) { |
310 DrawingRecorder recorder(context, *this, DisplayItem::DebugRedFill,
rect); | 310 DrawingRecorder recorder(context, *this, DisplayItem::DebugRedFill,
rect); |
311 context.fillRect(rect, SK_ColorRED); | 311 context.fillRect(rect, SK_ColorRED); |
312 } | 312 } |
313 } | 313 } |
314 #endif | 314 #endif |
315 m_client->paintContents(this, context, m_paintingPhase, clip); | 315 |
| 316 IntRect newInterestRect; |
| 317 if (RuntimeEnabledFeatures::slimmingPaintSynchronizedPaintingEnabled()) { |
| 318 if (!interestRect) { |
| 319 newInterestRect = m_client->computeInterestRect(this, m_previousInte
restRect); |
| 320 interestRect = &newInterestRect; |
| 321 } |
| 322 if (!m_client->needsRepaint() && !paintController()->cacheIsEmpty() && m
_previousInterestRect == *interestRect) { |
| 323 paintController()->createAndAppend<CachedDisplayItem>(*this, Display
Item::CachedDisplayItemList); |
| 324 return; |
| 325 } |
| 326 } |
| 327 |
| 328 m_client->paintContents(this, context, m_paintingPhase, *interestRect); |
316 notifyFirstPaintToClient(); | 329 notifyFirstPaintToClient(); |
| 330 m_previousInterestRect = *interestRect; |
317 } | 331 } |
318 | 332 |
319 void GraphicsLayer::notifyFirstPaintToClient() | 333 void GraphicsLayer::notifyFirstPaintToClient() |
320 { | 334 { |
321 if (!m_painted) { | 335 if (!m_painted) { |
322 m_painted = true; | 336 m_painted = true; |
323 m_client->notifyFirstPaint(); | 337 m_client->notifyFirstPaint(); |
324 } | 338 } |
325 if (!m_textPainted && m_paintController->textPainted()) { | 339 if (!m_textPainted && m_paintController->textPainted()) { |
326 m_textPainted = true; | 340 m_textPainted = true; |
(...skipping 865 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1192 { | 1206 { |
1193 if (!layer) { | 1207 if (!layer) { |
1194 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); | 1208 fprintf(stderr, "Cannot showGraphicsLayerTree for (nil).\n"); |
1195 return; | 1209 return; |
1196 } | 1210 } |
1197 | 1211 |
1198 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); | 1212 String output = layer->layerTreeAsText(blink::LayerTreeIncludesDebugInfo); |
1199 fprintf(stderr, "%s\n", output.utf8().data()); | 1213 fprintf(stderr, "%s\n", output.utf8().data()); |
1200 } | 1214 } |
1201 #endif | 1215 #endif |
OLD | NEW |