OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "services/ui/ws/server_window_compositor_frame_sink_manager.h" | 5 #include "services/ui/ws/server_window_compositor_frame_sink_manager.h" |
6 | 6 |
7 #include "cc/ipc/display_compositor.mojom.h" | 7 #include "cc/ipc/display_compositor.mojom.h" |
8 #include "mojo/public/cpp/bindings/strong_binding.h" | 8 #include "mojo/public/cpp/bindings/strong_binding.h" |
9 #include "services/ui/ws/ids.h" | 9 #include "services/ui/ws/ids.h" |
10 #include "services/ui/ws/server_window.h" | 10 #include "services/ui/ws/server_window.h" |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 mojom::CompositorFrameSinkType::DEFAULT) || | 87 mojom::CompositorFrameSinkType::DEFAULT) || |
88 HasCompositorFrameSinkOfType(mojom::CompositorFrameSinkType::UNDERLAY); | 88 HasCompositorFrameSinkOfType(mojom::CompositorFrameSinkType::UNDERLAY); |
89 } | 89 } |
90 | 90 |
91 gfx::Size ServerWindowCompositorFrameSinkManager::GetLatestFrameSize( | 91 gfx::Size ServerWindowCompositorFrameSinkManager::GetLatestFrameSize( |
92 mojom::CompositorFrameSinkType type) const { | 92 mojom::CompositorFrameSinkType type) const { |
93 auto it = type_to_compositor_frame_sink_map_.find(type); | 93 auto it = type_to_compositor_frame_sink_map_.find(type); |
94 if (it == type_to_compositor_frame_sink_map_.end()) | 94 if (it == type_to_compositor_frame_sink_map_.end()) |
95 return gfx::Size(); | 95 return gfx::Size(); |
96 | 96 |
97 return it->second.latest_submitted_frame_size; | 97 return it->second.latest_submitted_surface_info.size_in_pixels(); |
98 } | 98 } |
99 | 99 |
100 cc::SurfaceId ServerWindowCompositorFrameSinkManager::GetLatestSurfaceId( | 100 cc::SurfaceId ServerWindowCompositorFrameSinkManager::GetLatestSurfaceId( |
101 mojom::CompositorFrameSinkType type) const { | 101 mojom::CompositorFrameSinkType type) const { |
102 auto it = type_to_compositor_frame_sink_map_.find(type); | 102 auto it = type_to_compositor_frame_sink_map_.find(type); |
103 if (it == type_to_compositor_frame_sink_map_.end()) | 103 if (it == type_to_compositor_frame_sink_map_.end()) |
104 return cc::SurfaceId(); | 104 return cc::SurfaceId(); |
105 | 105 |
106 return it->second.latest_submitted_surface_id; | 106 return it->second.latest_submitted_surface_info.id(); |
107 } | 107 } |
108 | 108 |
109 void ServerWindowCompositorFrameSinkManager::SetLatestSurfaceInfo( | 109 void ServerWindowCompositorFrameSinkManager::SetLatestSurfaceInfo( |
110 mojom::CompositorFrameSinkType type, | 110 mojom::CompositorFrameSinkType type, |
111 const cc::SurfaceId& surface_id, | 111 const cc::SurfaceInfo& surface_info) { |
112 const gfx::Size& frame_size) { | |
113 CompositorFrameSinkData& data = type_to_compositor_frame_sink_map_[type]; | 112 CompositorFrameSinkData& data = type_to_compositor_frame_sink_map_[type]; |
114 data.latest_submitted_surface_id = surface_id; | 113 data.latest_submitted_surface_info = surface_info; |
115 data.latest_submitted_frame_size = frame_size; | |
116 } | 114 } |
117 | 115 |
118 void ServerWindowCompositorFrameSinkManager::OnRootChanged( | 116 void ServerWindowCompositorFrameSinkManager::OnRootChanged( |
119 ServerWindow* old_root, | 117 ServerWindow* old_root, |
120 ServerWindow* new_root) { | 118 ServerWindow* new_root) { |
121 for (const auto& pair : type_to_compositor_frame_sink_map_) { | 119 for (const auto& pair : type_to_compositor_frame_sink_map_) { |
122 if (old_root) { | 120 if (old_root) { |
123 old_root->GetOrCreateCompositorFrameSinkManager()->RemoveChildFrameSinkId( | 121 old_root->GetOrCreateCompositorFrameSinkManager()->RemoveChildFrameSinkId( |
124 pair.first, pair.second.frame_sink_id); | 122 pair.first, pair.second.frame_sink_id); |
125 } | 123 } |
126 if (new_root) { | 124 if (new_root) { |
127 new_root->GetOrCreateCompositorFrameSinkManager()->AddChildFrameSinkId( | 125 new_root->GetOrCreateCompositorFrameSinkManager()->AddChildFrameSinkId( |
128 pair.first, pair.second.frame_sink_id); | 126 pair.first, pair.second.frame_sink_id); |
129 } | 127 } |
130 } | 128 } |
131 } | 129 } |
132 | 130 |
133 bool ServerWindowCompositorFrameSinkManager:: | 131 bool ServerWindowCompositorFrameSinkManager:: |
134 IsCompositorFrameSinkReadyAndNonEmpty( | 132 IsCompositorFrameSinkReadyAndNonEmpty( |
135 mojom::CompositorFrameSinkType type) const { | 133 mojom::CompositorFrameSinkType type) const { |
136 auto iter = type_to_compositor_frame_sink_map_.find(type); | 134 auto iter = type_to_compositor_frame_sink_map_.find(type); |
137 if (iter == type_to_compositor_frame_sink_map_.end()) | 135 if (iter == type_to_compositor_frame_sink_map_.end()) |
138 return false; | 136 return false; |
139 if (iter->second.latest_submitted_frame_size.IsEmpty()) | 137 if (iter->second.latest_submitted_surface_info.size_in_pixels().IsEmpty()) |
140 return false; | 138 return false; |
141 const gfx::Size& latest_submitted_frame_size = | 139 const gfx::Size& latest_submitted_frame_size = |
142 iter->second.latest_submitted_frame_size; | 140 iter->second.latest_submitted_surface_info.size_in_pixels(); |
143 return latest_submitted_frame_size.width() >= window_->bounds().width() && | 141 return latest_submitted_frame_size.width() >= window_->bounds().width() && |
144 latest_submitted_frame_size.height() >= window_->bounds().height(); | 142 latest_submitted_frame_size.height() >= window_->bounds().height(); |
145 } | 143 } |
146 | 144 |
147 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal( | 145 void ServerWindowCompositorFrameSinkManager::CreateCompositorFrameSinkInternal( |
148 mojom::CompositorFrameSinkType compositor_frame_sink_type, | 146 mojom::CompositorFrameSinkType compositor_frame_sink_type, |
149 gfx::AcceleratedWidget widget, | 147 gfx::AcceleratedWidget widget, |
150 cc::mojom::MojoCompositorFrameSinkRequest request, | 148 cc::mojom::MojoCompositorFrameSinkRequest request, |
151 cc::mojom::MojoCompositorFrameSinkClientPtr client, | 149 cc::mojom::MojoCompositorFrameSinkClientPtr client, |
152 cc::mojom::DisplayPrivateRequest display_private_request) { | 150 cc::mojom::DisplayPrivateRequest display_private_request) { |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 } | 187 } |
190 } | 188 } |
191 } | 189 } |
192 | 190 |
193 CompositorFrameSinkData::CompositorFrameSinkData() {} | 191 CompositorFrameSinkData::CompositorFrameSinkData() {} |
194 | 192 |
195 CompositorFrameSinkData::~CompositorFrameSinkData() {} | 193 CompositorFrameSinkData::~CompositorFrameSinkData() {} |
196 | 194 |
197 CompositorFrameSinkData::CompositorFrameSinkData( | 195 CompositorFrameSinkData::CompositorFrameSinkData( |
198 CompositorFrameSinkData&& other) | 196 CompositorFrameSinkData&& other) |
199 : latest_submitted_surface_id(other.latest_submitted_surface_id), | 197 : latest_submitted_surface_info(other.latest_submitted_surface_info), |
200 compositor_frame_sink(std::move(other.compositor_frame_sink)) {} | 198 compositor_frame_sink(std::move(other.compositor_frame_sink)) {} |
201 | 199 |
202 CompositorFrameSinkData& CompositorFrameSinkData::operator=( | 200 CompositorFrameSinkData& CompositorFrameSinkData::operator=( |
203 CompositorFrameSinkData&& other) { | 201 CompositorFrameSinkData&& other) { |
204 latest_submitted_surface_id = other.latest_submitted_surface_id; | 202 latest_submitted_surface_info = other.latest_submitted_surface_info; |
205 compositor_frame_sink = std::move(other.compositor_frame_sink); | 203 compositor_frame_sink = std::move(other.compositor_frame_sink); |
206 return *this; | 204 return *this; |
207 } | 205 } |
208 | 206 |
209 } // namespace ws | 207 } // namespace ws |
210 } // namespace ui | 208 } // namespace ui |
OLD | NEW |