| Index: content/browser/gpu/gpu_process_host.cc
|
| diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc
|
| index a7c3aa703d3acd057cb54484394b309f3a7b6f72..d4a89662d008c30a3e5183774cb46746df1de41a 100644
|
| --- a/content/browser/gpu/gpu_process_host.cc
|
| +++ b/content/browser/gpu/gpu_process_host.cc
|
| @@ -903,6 +903,8 @@ void GpuProcessHost::OnAcceleratedSurfaceBuffersSwapped(
|
| // RenderWidgetHostImpl.
|
| ViewHostMsg_CompositorSurfaceBuffersSwapped_Params view_params;
|
| view_params.use_native_widget = native_widget;
|
| + view_params.native_widget_token = native_widget ?
|
| + RenderWidgetHelper::CreateNativeWidgetSwapToken() : 0;
|
| view_params.surface_id = params.surface_id;
|
| view_params.surface_handle = params.surface_handle;
|
| view_params.route_id = params.route_id;
|
| @@ -910,18 +912,22 @@ void GpuProcessHost::OnAcceleratedSurfaceBuffersSwapped(
|
| view_params.scale_factor = params.scale_factor;
|
| view_params.gpu_process_host_id = host_id_;
|
| view_params.latency_info = params.latency_info;
|
| - if (helper) {
|
| - helper->DidReceiveBackingStoreMsg(
|
| - ViewHostMsg_CompositorSurfaceBuffersSwapped(
|
| - render_widget_id,
|
| - view_params));
|
| - } else if (native_widget) {
|
| + // Always post a task to handle native widget messages, in case the helper
|
| + // that the message is sent to is destroyed before the message is handled.
|
| + if (native_widget) {
|
| BrowserThread::PostTask(
|
| BrowserThread::UI,
|
| FROM_HERE,
|
| base::Bind(&RenderWidgetHelper::OnNativeSurfaceBuffersSwappedOnUIThread,
|
| view_params));
|
| }
|
| + if (helper) {
|
| + helper->DidReceiveBackingStoreMsg(
|
| + ViewHostMsg_CompositorSurfaceBuffersSwapped(
|
| + render_widget_id,
|
| + view_params));
|
| + }
|
| +
|
| }
|
| #endif // OS_MACOSX
|
|
|
|
|