1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "ui/ozone/platform/dri/dri_window_delegate_proxy.h" 6 7#include "ui/ozone/common/gpu/ozone_gpu_messages.h" 8#include "ui/ozone/platform/dri/gpu_platform_support_host_gbm.h" 9 10namespace ui { 11 12DriWindowDelegateProxy::DriWindowDelegateProxy( 13 gfx::AcceleratedWidget widget, 14 GpuPlatformSupportHostGbm* sender) 15 : widget_(widget), sender_(sender) { 16} 17 18DriWindowDelegateProxy::~DriWindowDelegateProxy() { 19} 20 21void DriWindowDelegateProxy::Initialize() { 22 TRACE_EVENT1("dri", "DriWindowDelegateProxy::Initialize", "widget", widget_); 23 sender_->AddChannelObserver(this); 24} 25 26void DriWindowDelegateProxy::Shutdown() { 27 TRACE_EVENT1("dri", "DriWindowDelegateProxy::Shutdown", "widget", widget_); 28 sender_->RemoveChannelObserver(this); 29 if (!sender_->IsConnected()) 30 return; 31 32 bool status = sender_->Send(new OzoneGpuMsg_DestroyWindowDelegate(widget_)); 33 DCHECK(status); 34} 35 36gfx::AcceleratedWidget DriWindowDelegateProxy::GetAcceleratedWidget() { 37 return widget_; 38} 39 40HardwareDisplayController* DriWindowDelegateProxy::GetController() { 41 NOTREACHED(); 42 return NULL; 43} 44 45void DriWindowDelegateProxy::OnBoundsChanged(const gfx::Rect& bounds) { 46 TRACE_EVENT2("dri", 47 "DriWindowDelegateProxy::OnBoundsChanged", 48 "widget", 49 widget_, 50 "bounds", 51 bounds.ToString()); 52 bounds_ = bounds; 53 if (!sender_->IsConnected()) 54 return; 55 56 bool status = 57 sender_->Send(new OzoneGpuMsg_WindowBoundsChanged(widget_, bounds)); 58 DCHECK(status); 59} 60 61void DriWindowDelegateProxy::OnChannelEstablished() { 62 TRACE_EVENT1( 63 "dri", "DriWindowDelegateProxy::OnChannelEstablished", "widget", widget_); 64 bool status = sender_->Send(new OzoneGpuMsg_CreateWindowDelegate(widget_)); 65 DCHECK(status); 66 OnBoundsChanged(bounds_); 67} 68 69void DriWindowDelegateProxy::OnChannelDestroyed() { 70 TRACE_EVENT1( 71 "dri", "DriWindowDelegateProxy::OnChannelDestroyed", "widget", widget_); 72} 73 74} // namespace ui 75