| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/process_util.h" | 5 #include "base/process_util.h" |
| 6 #include "base/shared_memory.h" | 6 #include "base/shared_memory.h" |
| 7 #include "chrome/common/command_buffer_messages.h" | 7 #include "chrome/common/command_buffer_messages.h" |
| 8 #include "chrome/common/plugin_messages.h" |
| 8 #include "chrome/plugin/command_buffer_stub.h" | 9 #include "chrome/plugin/command_buffer_stub.h" |
| 9 #include "chrome/plugin/plugin_channel.h" | 10 #include "chrome/plugin/plugin_channel.h" |
| 10 | 11 |
| 11 using gpu::Buffer; | 12 using gpu::Buffer; |
| 12 | 13 |
| 13 CommandBufferStub::CommandBufferStub(PluginChannel* channel, | 14 CommandBufferStub::CommandBufferStub(PluginChannel* channel, |
| 15 int plugin_host_route_id, |
| 14 gfx::PluginWindowHandle window) | 16 gfx::PluginWindowHandle window) |
| 15 : channel_(channel), | 17 : channel_(channel), |
| 18 plugin_host_route_id_(plugin_host_route_id), |
| 16 window_(window) { | 19 window_(window) { |
| 17 route_id_ = channel->GenerateRouteID(); | 20 route_id_ = channel->GenerateRouteID(); |
| 18 channel->AddRoute(route_id_, this, false); | 21 channel->AddRoute(route_id_, this, false); |
| 19 } | 22 } |
| 20 | 23 |
| 21 CommandBufferStub::~CommandBufferStub() { | 24 CommandBufferStub::~CommandBufferStub() { |
| 22 channel_->RemoveRoute(route_id_); | 25 channel_->RemoveRoute(route_id_); |
| 23 } | 26 } |
| 24 | 27 |
| 25 void CommandBufferStub::OnChannelError() { | 28 void CommandBufferStub::OnChannelError() { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 51 | 54 |
| 52 // Initialize the CommandBufferService and GPUProcessor. | 55 // Initialize the CommandBufferService and GPUProcessor. |
| 53 if (command_buffer_->Initialize(size)) { | 56 if (command_buffer_->Initialize(size)) { |
| 54 Buffer buffer = command_buffer_->GetRingBuffer(); | 57 Buffer buffer = command_buffer_->GetRingBuffer(); |
| 55 if (buffer.shared_memory) { | 58 if (buffer.shared_memory) { |
| 56 processor_ = new gpu::GPUProcessor(command_buffer_.get()); | 59 processor_ = new gpu::GPUProcessor(command_buffer_.get()); |
| 57 if (processor_->Initialize(window_)) { | 60 if (processor_->Initialize(window_)) { |
| 58 command_buffer_->SetPutOffsetChangeCallback( | 61 command_buffer_->SetPutOffsetChangeCallback( |
| 59 NewCallback(processor_.get(), | 62 NewCallback(processor_.get(), |
| 60 &gpu::GPUProcessor::ProcessCommands)); | 63 &gpu::GPUProcessor::ProcessCommands)); |
| 64 #if defined(OS_MACOSX) |
| 65 processor_->SetSwapBuffersCallback( |
| 66 NewCallback(this, |
| 67 &CommandBufferStub::SwapBuffersCallback)); |
| 68 #endif |
| 61 buffer.shared_memory->ShareToProcess(peer_handle, ring_buffer); | 69 buffer.shared_memory->ShareToProcess(peer_handle, ring_buffer); |
| 62 } else { | 70 } else { |
| 63 processor_ = NULL; | 71 processor_ = NULL; |
| 64 command_buffer_.reset(); | 72 command_buffer_.reset(); |
| 65 } | 73 } |
| 66 } | 74 } |
| 67 } | 75 } |
| 68 | 76 |
| 69 base::CloseProcessHandle(peer_handle); | 77 base::CloseProcessHandle(peer_handle); |
| 70 } | 78 } |
| (...skipping 30 matching lines...) Expand all Loading... |
| 101 | 109 |
| 102 Buffer buffer = command_buffer_->GetTransferBuffer(id); | 110 Buffer buffer = command_buffer_->GetTransferBuffer(id); |
| 103 if (buffer.shared_memory) { | 111 if (buffer.shared_memory) { |
| 104 buffer.shared_memory->ShareToProcess(peer_handle, transfer_buffer); | 112 buffer.shared_memory->ShareToProcess(peer_handle, transfer_buffer); |
| 105 *size = buffer.shared_memory->max_size(); | 113 *size = buffer.shared_memory->max_size(); |
| 106 } | 114 } |
| 107 | 115 |
| 108 base::CloseProcessHandle(peer_handle); | 116 base::CloseProcessHandle(peer_handle); |
| 109 } | 117 } |
| 110 | 118 |
| 119 #if defined(OS_MACOSX) |
| 120 void CommandBufferStub::OnSetWindowSize(int32 width, int32 height) { |
| 121 uint64 new_backing_store = processor_->SetWindowSize(width, height); |
| 122 if (new_backing_store) { |
| 123 Send(new PluginHostMsg_GPUPluginSetIOSurface(plugin_host_route_id_, |
| 124 window_, |
| 125 width, |
| 126 height, |
| 127 new_backing_store)); |
| 128 } |
| 129 } |
| 130 |
| 131 void CommandBufferStub::SwapBuffersCallback() { |
| 132 Send(new PluginHostMsg_GPUPluginBuffersSwapped(plugin_host_route_id_, |
| 133 window_)); |
| 134 } |
| 135 #endif |
| 136 |
| 111 void CommandBufferStub::OnMessageReceived(const IPC::Message& msg) { | 137 void CommandBufferStub::OnMessageReceived(const IPC::Message& msg) { |
| 112 IPC_BEGIN_MESSAGE_MAP(CommandBufferStub, msg) | 138 IPC_BEGIN_MESSAGE_MAP(CommandBufferStub, msg) |
| 113 IPC_MESSAGE_HANDLER(CommandBufferMsg_Initialize, OnInitialize); | 139 IPC_MESSAGE_HANDLER(CommandBufferMsg_Initialize, OnInitialize); |
| 114 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetState, OnGetState); | 140 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetState, OnGetState); |
| 115 IPC_MESSAGE_HANDLER(CommandBufferMsg_Flush, OnFlush); | 141 IPC_MESSAGE_HANDLER(CommandBufferMsg_Flush, OnFlush); |
| 116 IPC_MESSAGE_HANDLER(CommandBufferMsg_CreateTransferBuffer, | 142 IPC_MESSAGE_HANDLER(CommandBufferMsg_CreateTransferBuffer, |
| 117 OnCreateTransferBuffer); | 143 OnCreateTransferBuffer); |
| 118 IPC_MESSAGE_HANDLER(CommandBufferMsg_DestroyTransferBuffer, | 144 IPC_MESSAGE_HANDLER(CommandBufferMsg_DestroyTransferBuffer, |
| 119 OnDestroyTransferBuffer); | 145 OnDestroyTransferBuffer); |
| 120 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetTransferBuffer, | 146 IPC_MESSAGE_HANDLER(CommandBufferMsg_GetTransferBuffer, |
| 121 OnGetTransferBuffer); | 147 OnGetTransferBuffer); |
| 148 #if defined(OS_MACOSX) |
| 149 IPC_MESSAGE_HANDLER(CommandBufferMsg_SetWindowSize, OnSetWindowSize); |
| 150 #endif |
| 122 IPC_MESSAGE_UNHANDLED_ERROR() | 151 IPC_MESSAGE_UNHANDLED_ERROR() |
| 123 IPC_END_MESSAGE_MAP() | 152 IPC_END_MESSAGE_MAP() |
| 124 } | 153 } |
| OLD | NEW |