Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: services/ui/ws/user_display_manager.cc

Issue 2696963003: Split cursor location from UserDisplayManager. (Closed)
Patch Set: Fix nits. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « services/ui/ws/user_display_manager.h ('k') | services/ui/ws/user_display_manager_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/user_display_manager.h" 5 #include "services/ui/ws/user_display_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "services/ui/display/screen_manager.h" 9 #include "services/ui/display/screen_manager.h"
10 #include "services/ui/ws/display.h" 10 #include "services/ui/ws/display.h"
(...skipping 17 matching lines...) Expand all
28 28
29 } // namespace 29 } // namespace
30 30
31 UserDisplayManager::UserDisplayManager(ws::DisplayManager* display_manager, 31 UserDisplayManager::UserDisplayManager(ws::DisplayManager* display_manager,
32 UserDisplayManagerDelegate* delegate, 32 UserDisplayManagerDelegate* delegate,
33 const UserId& user_id) 33 const UserId& user_id)
34 : display_manager_(display_manager), 34 : display_manager_(display_manager),
35 delegate_(delegate), 35 delegate_(delegate),
36 user_id_(user_id), 36 user_id_(user_id),
37 got_valid_frame_decorations_( 37 got_valid_frame_decorations_(
38 delegate->GetFrameDecorationsForUser(user_id, nullptr)), 38 delegate->GetFrameDecorationsForUser(user_id, nullptr)) {}
39 current_cursor_location_(0) {}
40 39
41 UserDisplayManager::~UserDisplayManager() {} 40 UserDisplayManager::~UserDisplayManager() {}
42 41
43 void UserDisplayManager::OnFrameDecorationValuesChanged() { 42 void UserDisplayManager::OnFrameDecorationValuesChanged() {
44 if (!got_valid_frame_decorations_) { 43 if (!got_valid_frame_decorations_) {
45 got_valid_frame_decorations_ = true; 44 got_valid_frame_decorations_ = true;
46 display_manager_observers_.ForAllPtrs([this]( 45 display_manager_observers_.ForAllPtrs([this](
47 mojom::DisplayManagerObserver* observer) { CallOnDisplays(observer); }); 46 mojom::DisplayManagerObserver* observer) { CallOnDisplays(observer); });
48 return; 47 return;
49 } 48 }
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 void UserDisplayManager::OnPrimaryDisplayChanged(int64_t primary_display_id) { 85 void UserDisplayManager::OnPrimaryDisplayChanged(int64_t primary_display_id) {
87 if (!got_valid_frame_decorations_) 86 if (!got_valid_frame_decorations_)
88 return; 87 return;
89 88
90 display_manager_observers_.ForAllPtrs( 89 display_manager_observers_.ForAllPtrs(
91 [primary_display_id](mojom::DisplayManagerObserver* observer) { 90 [primary_display_id](mojom::DisplayManagerObserver* observer) {
92 observer->OnPrimaryDisplayChanged(primary_display_id); 91 observer->OnPrimaryDisplayChanged(primary_display_id);
93 }); 92 });
94 } 93 }
95 94
96 void UserDisplayManager::OnMouseCursorLocationChanged(const gfx::Point& point) {
97 current_cursor_location_ =
98 static_cast<base::subtle::Atomic32>(
99 (point.x() & 0xFFFF) << 16 | (point.y() & 0xFFFF));
100 if (cursor_location_memory()) {
101 base::subtle::NoBarrier_Store(cursor_location_memory(),
102 current_cursor_location_);
103 }
104 }
105
106 mojo::ScopedSharedBufferHandle UserDisplayManager::GetCursorLocationMemory() {
107 if (!cursor_location_handle_.is_valid()) {
108 // Create our shared memory segment to share the cursor state with our
109 // window clients.
110 cursor_location_handle_ =
111 mojo::SharedBufferHandle::Create(sizeof(base::subtle::Atomic32));
112
113 if (!cursor_location_handle_.is_valid())
114 return mojo::ScopedSharedBufferHandle();
115
116 cursor_location_mapping_ =
117 cursor_location_handle_->Map(sizeof(base::subtle::Atomic32));
118 if (!cursor_location_mapping_)
119 return mojo::ScopedSharedBufferHandle();
120 base::subtle::NoBarrier_Store(cursor_location_memory(),
121 current_cursor_location_);
122 }
123
124 return cursor_location_handle_->Clone(
125 mojo::SharedBufferHandle::AccessMode::READ_ONLY);
126 }
127
128 void UserDisplayManager::AddObserver( 95 void UserDisplayManager::AddObserver(
129 mojom::DisplayManagerObserverPtr observer) { 96 mojom::DisplayManagerObserverPtr observer) {
130 mojom::DisplayManagerObserver* observer_impl = observer.get(); 97 mojom::DisplayManagerObserver* observer_impl = observer.get();
131 display_manager_observers_.AddPtr(std::move(observer)); 98 display_manager_observers_.AddPtr(std::move(observer));
132 OnObserverAdded(observer_impl); 99 OnObserverAdded(observer_impl);
133 } 100 }
134 101
135 void UserDisplayManager::OnObserverAdded( 102 void UserDisplayManager::OnObserverAdded(
136 mojom::DisplayManagerObserver* observer) { 103 mojom::DisplayManagerObserver* observer) {
137 // Many clients key off the frame decorations to size widgets. Wait for frame 104 // Many clients key off the frame decorations to size widgets. Wait for frame
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 mojom::DisplayManagerObserver* observer) { 136 mojom::DisplayManagerObserver* observer) {
170 // TODO(kylechar): Pass internal display id to clients here. 137 // TODO(kylechar): Pass internal display id to clients here.
171 observer->OnDisplays( 138 observer->OnDisplays(
172 GetAllDisplays(), 139 GetAllDisplays(),
173 display::ScreenManager::GetInstance()->GetPrimaryDisplayId(), 140 display::ScreenManager::GetInstance()->GetPrimaryDisplayId(),
174 display::kInvalidDisplayId); 141 display::kInvalidDisplayId);
175 } 142 }
176 143
177 } // namespace ws 144 } // namespace ws
178 } // namespace ui 145 } // namespace ui
OLDNEW
« no previous file with comments | « services/ui/ws/user_display_manager.h ('k') | services/ui/ws/user_display_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698