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

Unified Diff: components/mus/mus_app.cc

Issue 2089023002: Promotes remaining global window manager state into WindowManagerState (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: override Created 4 years, 6 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | components/mus/ws/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: components/mus/mus_app.cc
diff --git a/components/mus/mus_app.cc b/components/mus/mus_app.cc
index 2ffde8253aaa13bda7f165d8295332c14122fed8..a42e6c572e3fb4b553b01c7e0774e292a5f90881 100644
--- a/components/mus/mus_app.cc
+++ b/components/mus/mus_app.cc
@@ -68,7 +68,8 @@ const char kResourceFile200[] = "mus_app_resources_200.pak";
// TODO(sky): this is a pretty typical pattern, make it easier to do.
struct MusApp::PendingRequest {
shell::Connection* connection;
- std::unique_ptr<mojo::InterfaceRequest<mojom::WindowTreeFactory>> wtf_request;
+ std::unique_ptr<mojom::WindowTreeFactoryRequest> wtf_request;
+ std::unique_ptr<mojom::DisplayManagerRequest> dm_request;
};
struct MusApp::UserState {
@@ -239,8 +240,12 @@ bool MusApp::AcceptConnection(Connection* connection) {
void MusApp::OnFirstDisplayReady() {
PendingRequests requests;
requests.swap(pending_requests_);
- for (auto& request : requests)
- Create(request->connection, std::move(*request->wtf_request));
+ for (auto& request : requests) {
+ if (request->wtf_request)
+ Create(request->connection, std::move(*request->wtf_request));
+ else
+ Create(request->connection, std::move(*request->dm_request));
+ }
}
void MusApp::OnNoMoreDisplays() {
@@ -270,6 +275,15 @@ void MusApp::Create(shell::Connection* connection,
void MusApp::Create(shell::Connection* connection,
mojom::DisplayManagerRequest request) {
+ // DisplayManagerObservers generally expect there to be at least one display.
+ if (!window_server_->display_manager()->has_displays()) {
+ std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
+ pending_request->connection = connection;
+ pending_request->dm_request.reset(
+ new mojom::DisplayManagerRequest(std::move(request)));
+ pending_requests_.push_back(std::move(pending_request));
+ return;
+ }
window_server_->display_manager()
->GetUserDisplayManager(connection->GetRemoteIdentity().user_id())
->AddDisplayManagerBinding(std::move(request));
@@ -308,8 +322,7 @@ void MusApp::Create(Connection* connection,
std::unique_ptr<PendingRequest> pending_request(new PendingRequest);
pending_request->connection = connection;
pending_request->wtf_request.reset(
- new mojo::InterfaceRequest<mojom::WindowTreeFactory>(
- std::move(request)));
+ new mojom::WindowTreeFactoryRequest(std::move(request)));
pending_requests_.push_back(std::move(pending_request));
return;
}
« no previous file with comments | « no previous file | components/mus/ws/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698