OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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/window_server.h" | 5 #include "services/ui/ws/window_server.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 | 9 |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 #include "services/ui/ws/window_manager_state.h" | 23 #include "services/ui/ws/window_manager_state.h" |
24 #include "services/ui/ws/window_manager_window_tree_factory.h" | 24 #include "services/ui/ws/window_manager_window_tree_factory.h" |
25 #include "services/ui/ws/window_server_delegate.h" | 25 #include "services/ui/ws/window_server_delegate.h" |
26 #include "services/ui/ws/window_tree.h" | 26 #include "services/ui/ws/window_tree.h" |
27 #include "services/ui/ws/window_tree_binding.h" | 27 #include "services/ui/ws/window_tree_binding.h" |
28 #include "ui/gfx/geometry/size_conversions.h" | 28 #include "ui/gfx/geometry/size_conversions.h" |
29 | 29 |
30 namespace ui { | 30 namespace ui { |
31 namespace ws { | 31 namespace ws { |
32 | 32 |
| 33 struct WindowServer::CurrentMoveLoopState { |
| 34 uint32_t change_id; |
| 35 ServerWindow* window; |
| 36 WindowTree* initiator; |
| 37 gfx::Rect revert_bounds; |
| 38 }; |
| 39 |
33 WindowServer::WindowServer( | 40 WindowServer::WindowServer( |
34 WindowServerDelegate* delegate, | 41 WindowServerDelegate* delegate, |
35 const scoped_refptr<ui::SurfacesState>& surfaces_state) | 42 const scoped_refptr<ui::SurfacesState>& surfaces_state) |
36 : delegate_(delegate), | 43 : delegate_(delegate), |
37 surfaces_state_(surfaces_state), | 44 surfaces_state_(surfaces_state), |
38 next_client_id_(1), | 45 next_client_id_(1), |
39 display_manager_(new DisplayManager(this, &user_id_tracker_)), | 46 display_manager_(new DisplayManager(this, &user_id_tracker_)), |
40 current_operation_(nullptr), | 47 current_operation_(nullptr), |
41 in_destructor_(false), | 48 in_destructor_(false), |
42 next_wm_change_id_(0), | 49 next_wm_change_id_(0), |
(...skipping 365 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 } | 415 } |
409 | 416 |
410 void WindowServer::SetPaintCallback( | 417 void WindowServer::SetPaintCallback( |
411 const base::Callback<void(ServerWindow*)>& callback) { | 418 const base::Callback<void(ServerWindow*)>& callback) { |
412 DCHECK(delegate_->IsTestConfig()) << "Paint callbacks are expensive, and " | 419 DCHECK(delegate_->IsTestConfig()) << "Paint callbacks are expensive, and " |
413 << "allowed only in tests."; | 420 << "allowed only in tests."; |
414 DCHECK(window_paint_callback_.is_null() || callback.is_null()); | 421 DCHECK(window_paint_callback_.is_null() || callback.is_null()); |
415 window_paint_callback_ = callback; | 422 window_paint_callback_ = callback; |
416 } | 423 } |
417 | 424 |
| 425 void WindowServer::StartMoveLoop(uint32_t change_id, |
| 426 ServerWindow* window, |
| 427 WindowTree* initiator, |
| 428 const gfx::Rect& revert_bounds) { |
| 429 current_move_loop_.reset( |
| 430 new CurrentMoveLoopState{change_id, window, initiator, revert_bounds}); |
| 431 } |
| 432 |
| 433 void WindowServer::EndMoveLoop() { |
| 434 current_move_loop_.reset(); |
| 435 } |
| 436 |
| 437 uint32_t WindowServer::GetCurrentMoveLoopChangeId() { |
| 438 if (current_move_loop_) |
| 439 return current_move_loop_->change_id; |
| 440 return 0; |
| 441 } |
| 442 |
| 443 ServerWindow* WindowServer::GetCurrentMoveLoopWindow() { |
| 444 if (current_move_loop_) |
| 445 return current_move_loop_->window; |
| 446 return nullptr; |
| 447 } |
| 448 |
| 449 WindowTree* WindowServer::GetCurrentMoveLoopInitiator() { |
| 450 if (current_move_loop_) |
| 451 return current_move_loop_->initiator; |
| 452 return nullptr; |
| 453 } |
| 454 |
| 455 gfx::Rect WindowServer::GetCurrentMoveLoopRevertBounds() { |
| 456 if (current_move_loop_) |
| 457 return current_move_loop_->revert_bounds; |
| 458 return gfx::Rect(); |
| 459 } |
| 460 |
418 bool WindowServer::GetAndClearInFlightWindowManagerChange( | 461 bool WindowServer::GetAndClearInFlightWindowManagerChange( |
419 uint32_t window_manager_change_id, | 462 uint32_t window_manager_change_id, |
420 InFlightWindowManagerChange* change) { | 463 InFlightWindowManagerChange* change) { |
421 // There are valid reasons as to why we wouldn't know about the id. The | 464 // There are valid reasons as to why we wouldn't know about the id. The |
422 // most likely is the client disconnected before the response from the window | 465 // most likely is the client disconnected before the response from the window |
423 // manager came back. | 466 // manager came back. |
424 auto iter = in_flight_wm_change_map_.find(window_manager_change_id); | 467 auto iter = in_flight_wm_change_map_.find(window_manager_change_id); |
425 if (iter == in_flight_wm_change_map_.end()) | 468 if (iter == in_flight_wm_change_map_.end()) |
426 return false; | 469 return false; |
427 | 470 |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 void WindowServer::OnUserIdAdded(const UserId& id) { | 741 void WindowServer::OnUserIdAdded(const UserId& id) { |
699 activity_monitor_map_[id] = base::MakeUnique<UserActivityMonitor>(nullptr); | 742 activity_monitor_map_[id] = base::MakeUnique<UserActivityMonitor>(nullptr); |
700 } | 743 } |
701 | 744 |
702 void WindowServer::OnUserIdRemoved(const UserId& id) { | 745 void WindowServer::OnUserIdRemoved(const UserId& id) { |
703 activity_monitor_map_.erase(id); | 746 activity_monitor_map_.erase(id); |
704 } | 747 } |
705 | 748 |
706 } // namespace ws | 749 } // namespace ws |
707 } // namespace ui | 750 } // namespace ui |
OLD | NEW |