| Index: services/ui/ws/user_display_manager.cc
|
| diff --git a/services/ui/ws/user_display_manager.cc b/services/ui/ws/user_display_manager.cc
|
| index 4b9129cadebe7d52a8a98a8bd86ad2719afbeb1e..47c1fff6cd18f11f04c28bde7125b686024a6854 100644
|
| --- a/services/ui/ws/user_display_manager.cc
|
| +++ b/services/ui/ws/user_display_manager.cc
|
| @@ -14,6 +14,19 @@
|
|
|
| namespace ui {
|
| namespace ws {
|
| +namespace {
|
| +
|
| +std::vector<mojom::WsDisplayPtr> CloneDisplays(
|
| + const std::vector<mojom::WsDisplayPtr>& input) {
|
| + std::vector<mojom::WsDisplayPtr> result;
|
| + result.reserve(input.size());
|
| + for (const auto& display : input) {
|
| + result.push_back(display.Clone());
|
| + }
|
| + return result;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| UserDisplayManager::UserDisplayManager(ws::DisplayManager* display_manager,
|
| UserDisplayManagerDelegate* delegate,
|
| @@ -35,10 +48,10 @@ void UserDisplayManager::OnFrameDecorationValuesChanged() {
|
| return;
|
| }
|
|
|
| - mojo::Array<mojom::WsDisplayPtr> displays = GetAllDisplays();
|
| + std::vector<mojom::WsDisplayPtr> displays = GetAllDisplays();
|
| display_manager_observers_.ForAllPtrs(
|
| [this, &displays](mojom::DisplayManagerObserver* observer) {
|
| - observer->OnDisplaysChanged(displays.Clone().PassStorage());
|
| + observer->OnDisplaysChanged(CloneDisplays(displays));
|
| });
|
| }
|
|
|
| @@ -51,12 +64,12 @@ void UserDisplayManager::OnDisplayUpdate(Display* display) {
|
| if (!got_valid_frame_decorations_)
|
| return;
|
|
|
| - mojo::Array<mojom::WsDisplayPtr> displays(1);
|
| + std::vector<mojom::WsDisplayPtr> displays(1);
|
| displays[0] = GetWsDisplayPtr(*display);
|
|
|
| display_manager_observers_.ForAllPtrs(
|
| [&displays](mojom::DisplayManagerObserver* observer) {
|
| - observer->OnDisplaysChanged(displays.Clone().PassStorage());
|
| + observer->OnDisplaysChanged(CloneDisplays(displays));
|
| });
|
| }
|
|
|
| @@ -139,15 +152,14 @@ mojom::WsDisplayPtr UserDisplayManager::GetWsDisplayPtr(
|
| return ws_display;
|
| }
|
|
|
| -mojo::Array<mojom::WsDisplayPtr> UserDisplayManager::GetAllDisplays() {
|
| +std::vector<mojom::WsDisplayPtr> UserDisplayManager::GetAllDisplays() {
|
| const auto& displays = display_manager_->displays();
|
| - mojo::Array<mojom::WsDisplayPtr> display_ptrs(displays.size());
|
| + std::vector<mojom::WsDisplayPtr> display_ptrs;
|
| + display_ptrs.reserve(displays.size());
|
|
|
| - size_t i = 0;
|
| // TODO(sky): need ordering!
|
| for (Display* display : displays) {
|
| - display_ptrs[i] = GetWsDisplayPtr(*display);
|
| - ++i;
|
| + display_ptrs.push_back(GetWsDisplayPtr(*display));
|
| }
|
|
|
| return display_ptrs;
|
| @@ -157,7 +169,7 @@ void UserDisplayManager::CallOnDisplays(
|
| mojom::DisplayManagerObserver* observer) {
|
| // TODO(kylechar): Pass internal display id to clients here.
|
| observer->OnDisplays(
|
| - GetAllDisplays().PassStorage(),
|
| + GetAllDisplays(),
|
| display::ScreenManager::GetInstance()->GetPrimaryDisplayId(),
|
| display::kInvalidDisplayId);
|
| }
|
|
|