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

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

Issue 2414683003: Mus+Ash: propagate Surface ID to parents (Closed)
Patch Set: Addressed sky's comments Created 4 years, 2 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
OLDNEW
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 28 matching lines...) Expand all
39 }; 39 };
40 40
41 struct WindowServer::CurrentDragLoopState { 41 struct WindowServer::CurrentDragLoopState {
42 uint32_t change_id; 42 uint32_t change_id;
43 ServerWindow* window; 43 ServerWindow* window;
44 WindowTree* initiator; 44 WindowTree* initiator;
45 }; 45 };
46 46
47 WindowServer::WindowServer(WindowServerDelegate* delegate) 47 WindowServer::WindowServer(WindowServerDelegate* delegate)
48 : delegate_(delegate), 48 : delegate_(delegate),
49 display_compositor_(new DisplayCompositor()), 49 display_compositor_(new DisplayCompositor(this)),
50 next_client_id_(1), 50 next_client_id_(1),
51 display_manager_(new DisplayManager(this, &user_id_tracker_)), 51 display_manager_(new DisplayManager(this, &user_id_tracker_)),
52 current_operation_(nullptr), 52 current_operation_(nullptr),
53 in_destructor_(false), 53 in_destructor_(false),
54 next_wm_change_id_(0), 54 next_wm_change_id_(0),
55 gpu_proxy_(new GpuServiceProxy(this)), 55 gpu_proxy_(new GpuServiceProxy(this)),
56 window_manager_window_tree_factory_set_(this, &user_id_tracker_) { 56 window_manager_window_tree_factory_set_(this, &user_id_tracker_) {
57 user_id_tracker_.AddObserver(this); 57 user_id_tracker_.AddObserver(this);
58 OnUserIdAdded(user_id_tracker_.active_id()); 58 OnUserIdAdded(user_id_tracker_.active_id());
59 } 59 }
(...skipping 732 matching lines...) Expand 10 before | Expand all | Expand 10 after
792 } 792 }
793 793
794 void WindowServer::OnGpuChannelEstablished( 794 void WindowServer::OnGpuChannelEstablished(
795 scoped_refptr<gpu::GpuChannelHost> gpu_channel) { 795 scoped_refptr<gpu::GpuChannelHost> gpu_channel) {
796 gpu_channel_ = std::move(gpu_channel); 796 gpu_channel_ = std::move(gpu_channel);
797 const std::set<Display*>& displays = display_manager()->displays(); 797 const std::set<Display*>& displays = display_manager()->displays();
798 for (auto* display : displays) 798 for (auto* display : displays)
799 display->platform_display()->OnGpuChannelEstablished(gpu_channel_); 799 display->platform_display()->OnGpuChannelEstablished(gpu_channel_);
800 } 800 }
801 801
802 void WindowServer::OnSurfaceCreated(const cc::SurfaceId& surface_id,
803 const gfx::Size& frame_size,
804 float device_scale_factor) {
805 WindowId window_id(
806 WindowIdFromTransportId(surface_id.frame_sink_id().client_id()));
807 mojom::SurfaceType surface_type(
808 static_cast<mojom::SurfaceType>(surface_id.frame_sink_id().sink_id()));
809 // We only care about propagating default surface IDs.
810 // TODO(fsamuel, sadrul): we should get rid of surface types.
811 if (surface_type != mojom::SurfaceType::DEFAULT)
812 return;
813 ServerWindow* window = GetWindow(window_id);
814 // If the window doesn't have a parent then we have nothing to propagate.
815 if (!window || !window->parent())
816 return;
817 GetTreeWithId(window->parent()->id().client_id)
sky 2016/10/14 22:44:36 Please make sure there is a WindowTree. I'm mildly
Fady Samuel 2016/10/14 23:09:50 Done.
818 ->ProcessWindowSurfaceChanged(window, surface_id, frame_size,
819 device_scale_factor);
820 }
821
802 void WindowServer::OnActiveUserIdChanged(const UserId& previously_active_id, 822 void WindowServer::OnActiveUserIdChanged(const UserId& previously_active_id,
803 const UserId& active_id) { 823 const UserId& active_id) {
804 if (IsUserInHighContrastMode(previously_active_id) == 824 if (IsUserInHighContrastMode(previously_active_id) ==
805 IsUserInHighContrastMode(active_id)) 825 IsUserInHighContrastMode(active_id))
806 return; 826 return;
807 for (Display* display : display_manager_->displays()) { 827 for (Display* display : display_manager_->displays()) {
808 display->SchedulePaint(display->root_window(), 828 display->SchedulePaint(display->root_window(),
809 gfx::Rect(display->root_window()->bounds().size())); 829 gfx::Rect(display->root_window()->bounds().size()));
810 } 830 }
811 } 831 }
812 832
813 void WindowServer::OnUserIdAdded(const UserId& id) { 833 void WindowServer::OnUserIdAdded(const UserId& id) {
814 activity_monitor_map_[id] = base::MakeUnique<UserActivityMonitor>(nullptr); 834 activity_monitor_map_[id] = base::MakeUnique<UserActivityMonitor>(nullptr);
815 } 835 }
816 836
817 void WindowServer::OnUserIdRemoved(const UserId& id) { 837 void WindowServer::OnUserIdRemoved(const UserId& id) {
818 activity_monitor_map_.erase(id); 838 activity_monitor_map_.erase(id);
819 } 839 }
820 840
821 } // namespace ws 841 } // namespace ws
822 } // namespace ui 842 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698