| Index: chrome/renderer/command_buffer_proxy.cc
|
| ===================================================================
|
| --- chrome/renderer/command_buffer_proxy.cc (revision 46421)
|
| +++ chrome/renderer/command_buffer_proxy.cc (working copy)
|
| @@ -184,7 +184,21 @@
|
| }
|
|
|
| void CommandBufferProxy::ResizeOffscreenFrameBuffer(const gfx::Size& size) {
|
| - Send(new GpuCommandBufferMsg_ResizeOffscreenFrameBuffer(route_id_, size));
|
| + IPC::Message* message =
|
| + new GpuCommandBufferMsg_ResizeOffscreenFrameBuffer(route_id_, size);
|
| + // We need to set the unblock flag on this message to guarantee the
|
| + // order in which it is processed in the GPU process. Ordinarily in
|
| + // certain situations, namely if a synchronous message is being
|
| + // processed, other synchronous messages may be processed before
|
| + // asynchronous messages. During some page reloads WebGL seems to
|
| + // send three messages (sync, async, sync) in rapid succession in
|
| + // that order, and the sync message (GpuCommandBufferMsg_Flush, on
|
| + // behalf of SwapBuffers) is sometimes processed before the async
|
| + // message (GpuCommandBufferMsg_ResizeOffscreenFrameBuffer). This
|
| + // causes the WebGL content to disappear because the back buffer is
|
| + // not correctly resized.
|
| + message->set_unblock(true);
|
| + Send(message);
|
| }
|
|
|
| #if defined(OS_MACOSX)
|
|
|