Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / ui / ozone / platform / dri / dri_window_delegate_proxy.cc
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
10 namespace ui {
11
12 DriWindowDelegateProxy::DriWindowDelegateProxy(
13     gfx::AcceleratedWidget widget,
14     GpuPlatformSupportHostGbm* sender)
15     : widget_(widget), sender_(sender) {
16 }
17
18 DriWindowDelegateProxy::~DriWindowDelegateProxy() {
19 }
20
21 void DriWindowDelegateProxy::Initialize() {
22   TRACE_EVENT1("dri", "DriWindowDelegateProxy::Initialize", "widget", widget_);
23   sender_->AddChannelObserver(this);
24 }
25
26 void 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
36 gfx::AcceleratedWidget DriWindowDelegateProxy::GetAcceleratedWidget() {
37   return widget_;
38 }
39
40 HardwareDisplayController* DriWindowDelegateProxy::GetController() {
41   NOTREACHED();
42   return NULL;
43 }
44
45 void 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
61 void 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
69 void DriWindowDelegateProxy::OnChannelDestroyed() {
70   TRACE_EVENT1(
71       "dri", "DriWindowDelegateProxy::OnChannelDestroyed", "widget", widget_);
72 }
73
74 }  // namespace ui