// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "ui/ozone/public/ui_thread_gpu.h" #include "ipc/ipc_listener.h" #include "ipc/ipc_message.h" #include "ipc/ipc_sender.h" #include "ui/ozone/public/gpu_platform_support.h" #include "ui/ozone/public/gpu_platform_support_host.h" #include "ui/ozone/public/ozone_platform.h" namespace ui { class UiThreadGpuForwardingSender : public IPC::Sender { public: explicit UiThreadGpuForwardingSender(IPC::Listener* listener) : listener_(listener) {} virtual ~UiThreadGpuForwardingSender() {} // IPC::Sender: virtual bool Send(IPC::Message* msg) OVERRIDE { listener_->OnMessageReceived(*msg); delete msg; return true; } private: IPC::Listener* listener_; }; UiThreadGpu::UiThreadGpu() { } UiThreadGpu::~UiThreadGpu() { } bool UiThreadGpu::Initialize() { OzonePlatform* platform = ui::OzonePlatform::GetInstance(); ui_sender_.reset( new UiThreadGpuForwardingSender(platform->GetGpuPlatformSupportHost())); gpu_sender_.reset( new UiThreadGpuForwardingSender(platform->GetGpuPlatformSupport())); const int kHostId = 1; platform->GetGpuPlatformSupportHost()->OnChannelEstablished( kHostId, gpu_sender_.get()); platform->GetGpuPlatformSupport()->OnChannelEstablished(ui_sender_.get()); return true; } } // namespace ui