OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 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 are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 1126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1137 page()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); | 1137 page()->mainFrame()->view()->syncCompositingStateIncludingSubframes(); |
1138 | 1138 |
1139 TRACE_EVENT("WebViewImpl::composite", this, 0); | 1139 TRACE_EVENT("WebViewImpl::composite", this, 0); |
1140 if (m_recreatingGraphicsContext) { | 1140 if (m_recreatingGraphicsContext) { |
1141 // reallocateRenderer will request a repaint whether or not it succeeded | 1141 // reallocateRenderer will request a repaint whether or not it succeeded |
1142 // in creating a new context. | 1142 // in creating a new context. |
1143 reallocateRenderer(); | 1143 reallocateRenderer(); |
1144 m_recreatingGraphicsContext = false; | 1144 m_recreatingGraphicsContext = false; |
1145 return; | 1145 return; |
1146 } | 1146 } |
1147 doComposite(); | |
1148 | 1147 |
1149 // Finish if requested. | 1148 // Do not composite if the compositor context is already lost. |
1150 if (finish) | 1149 if (!m_layerRenderer->isCompositorContextLost()) { |
1151 m_layerRenderer->finish(); | 1150 doComposite(); |
1152 | 1151 |
1153 // Put result onscreen. | 1152 // Finish if requested. |
1154 m_layerRenderer->present(); | 1153 if (finish) |
| 1154 m_layerRenderer->finish(); |
| 1155 |
| 1156 // Put result onscreen. |
| 1157 m_layerRenderer->present(); |
| 1158 } |
1155 | 1159 |
1156 if (m_layerRenderer->isCompositorContextLost()) { | 1160 if (m_layerRenderer->isCompositorContextLost()) { |
1157 // Trying to recover the context right here will not work if GPU process | 1161 // Trying to recover the context right here will not work if GPU process |
1158 // died. This is because GpuChannelHost::OnErrorMessage will only be | 1162 // died. This is because GpuChannelHost::OnErrorMessage will only be |
1159 // called at the next iteration of the message loop, reverting our | 1163 // called at the next iteration of the message loop, reverting our |
1160 // recovery attempts here. Instead, we detach the root layer from the | 1164 // recovery attempts here. Instead, we detach the root layer from the |
1161 // renderer, recreate the renderer at the next message loop iteration | 1165 // renderer, recreate the renderer at the next message loop iteration |
1162 // and request a repaint yet again. | 1166 // and request a repaint yet again. |
1163 m_recreatingGraphicsContext = true; | 1167 m_recreatingGraphicsContext = true; |
1164 setRootLayerNeedsDisplay(); | 1168 setRootLayerNeedsDisplay(); |
(...skipping 1417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2582 return; | 2586 return; |
2583 | 2587 |
2584 ASSERT(visibilityState == WebPageVisibilityStateVisible | 2588 ASSERT(visibilityState == WebPageVisibilityStateVisible |
2585 || visibilityState == WebPageVisibilityStateHidden | 2589 || visibilityState == WebPageVisibilityStateHidden |
2586 || visibilityState == WebPageVisibilityStatePrerender); | 2590 || visibilityState == WebPageVisibilityStatePrerender); |
2587 m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast<int>
(visibilityState)), isInitialState); | 2591 m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast<int>
(visibilityState)), isInitialState); |
2588 #endif | 2592 #endif |
2589 } | 2593 } |
2590 | 2594 |
2591 } // namespace WebKit | 2595 } // namespace WebKit |
OLD | NEW |