OLD | NEW |
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 * 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 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 } | 292 } |
293 | 293 |
294 // Temporary hack until WebViewImpl context creation gets simplified | 294 // Temporary hack until WebViewImpl context creation gets simplified |
295 CCGraphicsContext* CCLayerTreeHost::context() | 295 CCGraphicsContext* CCLayerTreeHost::context() |
296 { | 296 { |
297 return m_proxy->context(); | 297 return m_proxy->context(); |
298 } | 298 } |
299 | 299 |
300 bool CCLayerTreeHost::compositeAndReadback(void *pixels, const IntRect& rect) | 300 bool CCLayerTreeHost::compositeAndReadback(void *pixels, const IntRect& rect) |
301 { | 301 { |
302 if (!m_layerRendererInitialized) { | |
303 initializeLayerRenderer(); | |
304 if (!m_layerRendererInitialized) | |
305 return false; | |
306 } | |
307 if (m_contextLost) { | |
308 if (recreateContext() != RecreateSucceeded) | |
309 return false; | |
310 } | |
311 m_triggerIdlePaints = false; | 302 m_triggerIdlePaints = false; |
312 bool ret = m_proxy->compositeAndReadback(pixels, rect); | 303 bool ret = m_proxy->compositeAndReadback(pixels, rect); |
313 m_triggerIdlePaints = true; | 304 m_triggerIdlePaints = true; |
314 return ret; | 305 return ret; |
315 } | 306 } |
316 | 307 |
317 void CCLayerTreeHost::finishAllRendering() | 308 void CCLayerTreeHost::finishAllRendering() |
318 { | 309 { |
319 if (!m_layerRendererInitialized) | 310 if (!m_layerRendererInitialized) |
320 return; | 311 return; |
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
459 { | 450 { |
460 ASSERT(!CCThreadProxy::implThread()); | 451 ASSERT(!CCThreadProxy::implThread()); |
461 static_cast<CCSingleThreadProxy*>(m_proxy.get())->compositeImmediately(); | 452 static_cast<CCSingleThreadProxy*>(m_proxy.get())->compositeImmediately(); |
462 } | 453 } |
463 | 454 |
464 void CCLayerTreeHost::scheduleComposite() | 455 void CCLayerTreeHost::scheduleComposite() |
465 { | 456 { |
466 m_client->scheduleComposite(); | 457 m_client->scheduleComposite(); |
467 } | 458 } |
468 | 459 |
469 bool CCLayerTreeHost::updateLayers(CCTextureUpdater& updater) | 460 bool CCLayerTreeHost::initializeLayerRendererIfNeeded() |
470 { | 461 { |
471 if (!m_layerRendererInitialized) { | 462 if (!m_layerRendererInitialized) { |
472 initializeLayerRenderer(); | 463 initializeLayerRenderer(); |
473 // If we couldn't initialize, then bail since we're returning to softwar
e mode. | 464 // If we couldn't initialize, then bail since we're returning to softwar
e mode. |
474 if (!m_layerRendererInitialized) | 465 if (!m_layerRendererInitialized) |
475 return false; | 466 return false; |
476 } | 467 } |
477 if (m_contextLost) { | 468 if (m_contextLost) { |
478 if (recreateContext() != RecreateSucceeded) | 469 if (recreateContext() != RecreateSucceeded) |
479 return false; | 470 return false; |
480 } | 471 } |
| 472 return true; |
| 473 } |
481 | 474 |
| 475 |
| 476 void CCLayerTreeHost::updateLayers(CCTextureUpdater& updater) |
| 477 { |
| 478 ASSERT(m_layerRendererInitialized); |
482 // The visible state and memory allocation are set independently and in | 479 // The visible state and memory allocation are set independently and in |
483 // arbitrary order, so do not change the memory allocation used for the | 480 // arbitrary order, so do not change the memory allocation used for the |
484 // current commit until both values match intentions. | 481 // current commit until both values match intentions. |
485 // FIXME: These two states should be combined into a single action so we | 482 // FIXME: These two states should be combined into a single action so we |
486 // need a single commit to change visible state, and this can be removed. | 483 // need a single commit to change visible state, and this can be removed. |
487 bool memoryAllocationStateMatchesVisibility = m_visible == m_memoryAllocatio
nIsForDisplay; | 484 bool memoryAllocationStateMatchesVisibility = m_visible == m_memoryAllocatio
nIsForDisplay; |
488 if (memoryAllocationStateMatchesVisibility) { | 485 if (memoryAllocationStateMatchesVisibility) { |
489 m_contentsTextureManager->setMemoryAllocationLimitBytes(m_memoryAllocati
onBytes); | 486 m_contentsTextureManager->setMemoryAllocationLimitBytes(m_memoryAllocati
onBytes); |
490 m_frameIsForDisplay = m_memoryAllocationIsForDisplay; | 487 m_frameIsForDisplay = m_memoryAllocationIsForDisplay; |
491 } | 488 } |
492 | 489 |
493 if (!rootLayer()) | 490 if (!rootLayer()) |
494 return true; | 491 return; |
495 | 492 |
496 if (viewportSize().isEmpty()) | 493 if (viewportSize().isEmpty()) |
497 return true; | 494 return; |
498 | 495 |
499 updateLayers(rootLayer(), updater); | 496 updateLayers(rootLayer(), updater); |
500 return true; | |
501 } | 497 } |
502 | 498 |
503 void CCLayerTreeHost::updateLayers(LayerChromium* rootLayer, CCTextureUpdater& u
pdater) | 499 void CCLayerTreeHost::updateLayers(LayerChromium* rootLayer, CCTextureUpdater& u
pdater) |
504 { | 500 { |
505 TRACE_EVENT("CCLayerTreeHost::updateLayers", this, 0); | 501 TRACE_EVENT("CCLayerTreeHost::updateLayers", this, 0); |
506 | 502 |
507 if (!rootLayer->renderSurface()) | 503 if (!rootLayer->renderSurface()) |
508 rootLayer->createRenderSurface(); | 504 rootLayer->createRenderSurface(); |
509 rootLayer->renderSurface()->setContentRect(IntRect(IntPoint(0, 0), deviceVie
wportSize())); | 505 rootLayer->renderSurface()->setContentRect(IntRect(IntPoint(0, 0), deviceVie
wportSize())); |
510 | 506 |
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
762 else | 758 else |
763 layer->notifyAnimationFinished(wallClockTime); | 759 layer->notifyAnimationFinished(wallClockTime); |
764 } | 760 } |
765 } | 761 } |
766 | 762 |
767 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn
dex) | 763 for (size_t childIndex = 0; childIndex < layer->children().size(); ++childIn
dex) |
768 setAnimationEventsRecursive(events, layer->children()[childIndex].get(),
wallClockTime); | 764 setAnimationEventsRecursive(events, layer->children()[childIndex].get(),
wallClockTime); |
769 } | 765 } |
770 | 766 |
771 } // namespace WebCore | 767 } // namespace WebCore |
OLD | NEW |