| Index: content/gpu/gpu_child_thread.cc
|
| diff --git a/content/gpu/gpu_child_thread.cc b/content/gpu/gpu_child_thread.cc
|
| index b9f7bc5442aabdda8398c56817ef52b8cde3f822..bcf5c03874a8c120a650f6cd54355ee0cf385cae 100644
|
| --- a/content/gpu/gpu_child_thread.cc
|
| +++ b/content/gpu/gpu_child_thread.cc
|
| @@ -15,6 +15,8 @@
|
| #include "content/child/thread_safe_sender.h"
|
| #include "content/common/gpu/gpu_memory_buffer_factory.h"
|
| #include "content/common/gpu/gpu_messages.h"
|
| +#include "content/gpu/chrome_gpu_memory_buffer_service_ipc_transport.h"
|
| +#include "content/gpu/gpu_memory_buffer_service.h"
|
| #include "content/gpu/gpu_process_control_impl.h"
|
| #include "content/gpu/gpu_watchdog_thread.h"
|
| #include "content/public/common/content_client.h"
|
| @@ -49,74 +51,14 @@ bool GpuProcessLogMessageHandler(int severity,
|
| return false;
|
| }
|
|
|
| -// Message filter used to to handle GpuMsg_CreateGpuMemoryBuffer messages on
|
| -// the IO thread. This allows the UI thread in the browser process to remain
|
| -// fast at all times.
|
| -class GpuMemoryBufferMessageFilter : public IPC::MessageFilter {
|
| - public:
|
| - explicit GpuMemoryBufferMessageFilter(
|
| - GpuMemoryBufferFactory* gpu_memory_buffer_factory)
|
| - : gpu_memory_buffer_factory_(gpu_memory_buffer_factory),
|
| - sender_(nullptr) {}
|
| -
|
| - // Overridden from IPC::MessageFilter:
|
| - void OnFilterAdded(IPC::Sender* sender) override {
|
| - DCHECK(!sender_);
|
| - sender_ = sender;
|
| - }
|
| - void OnFilterRemoved() override {
|
| - DCHECK(sender_);
|
| - sender_ = nullptr;
|
| - }
|
| - bool OnMessageReceived(const IPC::Message& message) override {
|
| - DCHECK(sender_);
|
| - bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP(GpuMemoryBufferMessageFilter, message)
|
| - IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBuffer, OnCreateGpuMemoryBuffer)
|
| - IPC_MESSAGE_HANDLER(GpuMsg_CreateGpuMemoryBufferFromHandle,
|
| - OnCreateGpuMemoryBufferFromHandle)
|
| - IPC_MESSAGE_UNHANDLED(handled = false)
|
| - IPC_END_MESSAGE_MAP()
|
| - return handled;
|
| - }
|
| -
|
| - protected:
|
| - ~GpuMemoryBufferMessageFilter() override {}
|
| -
|
| - void OnCreateGpuMemoryBuffer(
|
| - const GpuMsg_CreateGpuMemoryBuffer_Params& params) {
|
| - TRACE_EVENT2("gpu", "GpuMemoryBufferMessageFilter::OnCreateGpuMemoryBuffer",
|
| - "id", params.id.id, "client_id", params.client_id);
|
| -
|
| - DCHECK(gpu_memory_buffer_factory_);
|
| - sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated(
|
| - gpu_memory_buffer_factory_->CreateGpuMemoryBuffer(
|
| - params.id, params.size, params.format, params.usage,
|
| - params.client_id, params.surface_handle)));
|
| - }
|
| -
|
| - void OnCreateGpuMemoryBufferFromHandle(
|
| - const GpuMsg_CreateGpuMemoryBufferFromHandle_Params& params) {
|
| - TRACE_EVENT2(
|
| - "gpu",
|
| - "GpuMemoryBufferMessageFilter::OnCreateGpuMemoryBufferFromHandle", "id",
|
| - params.id.id, "client_id", params.client_id);
|
| - sender_->Send(new GpuHostMsg_GpuMemoryBufferCreated(
|
| - gpu_memory_buffer_factory_->CreateGpuMemoryBufferFromHandle(
|
| - params.handle, params.id, params.size, params.format,
|
| - params.client_id)));
|
| - }
|
| -
|
| - GpuMemoryBufferFactory* const gpu_memory_buffer_factory_;
|
| - IPC::Sender* sender_;
|
| -};
|
| -
|
| ChildThreadImpl::Options GetOptions(
|
| GpuMemoryBufferFactory* gpu_memory_buffer_factory) {
|
| ChildThreadImpl::Options::Builder builder;
|
|
|
| builder.AddStartupFilter(
|
| - new GpuMemoryBufferMessageFilter(gpu_memory_buffer_factory));
|
| + static_cast<ChromeGpuMemoryBufferServiceIPCTransport*>(
|
| + (new GpuMemoryBufferService(gpu_memory_buffer_factory))->transport())
|
| + ->filter());
|
|
|
| #if defined(USE_OZONE)
|
| IPC::MessageFilter* message_filter = ui::OzonePlatform::GetInstance()
|
| @@ -156,11 +98,15 @@ GpuChildThread::GpuChildThread(
|
| const InProcessChildThreadParams& params,
|
| GpuMemoryBufferFactory* gpu_memory_buffer_factory,
|
| gpu::SyncPointManager* sync_point_manager)
|
| - : ChildThreadImpl(ChildThreadImpl::Options::Builder()
|
| - .InBrowserProcess(params)
|
| - .AddStartupFilter(new GpuMemoryBufferMessageFilter(
|
| - gpu_memory_buffer_factory))
|
| - .Build()),
|
| + : ChildThreadImpl(
|
| + ChildThreadImpl::Options::Builder()
|
| + .InBrowserProcess(params)
|
| + .AddStartupFilter(
|
| + static_cast<ChromeGpuMemoryBufferServiceIPCTransport*>(
|
| + (new GpuMemoryBufferService(gpu_memory_buffer_factory))
|
| + ->transport())
|
| + ->filter())
|
| + .Build()),
|
| dead_on_arrival_(false),
|
| sync_point_manager_(sync_point_manager),
|
| in_browser_process_(true),
|
|
|