| 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 |