void CoordinatedGraphicsScene::commitSceneState(const CoordinatedGraphicsState& state) { m_renderedContentsScrollPosition = state.scrollPosition; // Since the frame has now been rendered, we can safely unlock the animations until the next layout. setAnimationsLocked(false); if (state.rootCompositingLayer != m_rootLayerID) setRootLayerID(state.rootCompositingLayer); if (state.backgroundColor != m_backgroundColor) setBackgroundColor(state.backgroundColor); for (size_t i = 0; i < state.imagesToUpdate.size(); ++i) updateImageBacking(state.imagesToUpdate[i].first, state.imagesToUpdate[i].second); for (size_t i = 0; i < state.layersToUpdate.size(); ++i) setLayerState(state.layersToUpdate[i].first, state.layersToUpdate[i].second); m_rootLayer->flushCompositingState(FloatRect()); commitPendingBackingStoreOperations(); removeReleasedImageBackingsIfNeeded(); // The pending tiles state is on its way for the screen, tell the web process to render the next one. dispatchOnMainThread(bind(&CoordinatedGraphicsScene::renderNextFrame, this)); }
void CoordinatedGraphicsScene::syncImageBackings(const CoordinatedGraphicsState& state) { for (size_t i = 0; i < state.imagesToRemove.size(); ++i) removeImageBacking(state.imagesToRemove[i]); for (size_t i = 0; i < state.imagesToCreate.size(); ++i) createImageBacking(state.imagesToCreate[i]); for (size_t i = 0; i < state.imagesToUpdate.size(); ++i) updateImageBacking(state.imagesToUpdate[i].first, state.imagesToUpdate[i].second); for (size_t i = 0; i < state.imagesToClear.size(); ++i) clearImageBackingContents(state.imagesToClear[i]); }
void CoordinatedGraphicsScene::syncImageBackings(const CoordinatedGraphicsState& state) { for (auto& image : state.imagesToRemove) removeImageBacking(image); for (auto& image : state.imagesToCreate) createImageBacking(image); for (auto& image : state.imagesToUpdate) updateImageBacking(image.first, image.second); for (auto& image : state.imagesToClear) clearImageBackingContents(image); }