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

Side by Side Diff: ui/display/chromeos/display_configurator.h

Issue 886103002: Make SetDisplayPower() take a callback to signal completion (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed nits Created 5 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
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 #ifndef UI_DISPLAY_CHROMEOS_DISPLAY_CONFIGURATOR_H_ 5 #ifndef UI_DISPLAY_CHROMEOS_DISPLAY_CONFIGURATOR_H_
6 #define UI_DISPLAY_CHROMEOS_DISPLAY_CONFIGURATOR_H_ 6 #define UI_DISPLAY_CHROMEOS_DISPLAY_CONFIGURATOR_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <map> 10 #include <map>
(...skipping 22 matching lines...) Expand all
33 class DisplaySnapshot; 33 class DisplaySnapshot;
34 class NativeDisplayDelegate; 34 class NativeDisplayDelegate;
35 class UpdateDisplayConfigurationTask; 35 class UpdateDisplayConfigurationTask;
36 36
37 // This class interacts directly with the system display configurator. 37 // This class interacts directly with the system display configurator.
38 class DISPLAY_EXPORT DisplayConfigurator : public NativeDisplayObserver { 38 class DISPLAY_EXPORT DisplayConfigurator : public NativeDisplayObserver {
39 public: 39 public:
40 typedef uint64_t ContentProtectionClientId; 40 typedef uint64_t ContentProtectionClientId;
41 static const ContentProtectionClientId kInvalidClientId = 0; 41 static const ContentProtectionClientId kInvalidClientId = 0;
42 42
43 typedef base::Callback<void(bool)> ConfigurationCallback;
44
43 struct DisplayState { 45 struct DisplayState {
44 DisplayState(); 46 DisplayState();
45 47
46 DisplaySnapshot* display; // Not owned. 48 DisplaySnapshot* display; // Not owned.
47 49
48 // User-selected mode for the display. 50 // User-selected mode for the display.
49 const DisplayMode* selected_mode; 51 const DisplayMode* selected_mode;
50 52
51 // Mode used when displaying the same desktop on multiple displays. 53 // Mode used when displaying the same desktop on multiple displays.
52 const DisplayMode* mirror_mode; 54 const DisplayMode* mirror_mode;
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // DisplayConfigurator sets the background color of X's RootWindow to this 217 // DisplayConfigurator sets the background color of X's RootWindow to this
216 // color. 218 // color.
217 void ForceInitialConfigure(uint32_t background_color_argb); 219 void ForceInitialConfigure(uint32_t background_color_argb);
218 220
219 // Stop handling display configuration events/requests. 221 // Stop handling display configuration events/requests.
220 void PrepareForExit(); 222 void PrepareForExit();
221 223
222 // Called when powerd notifies us that some set of displays should be turned 224 // Called when powerd notifies us that some set of displays should be turned
223 // on or off. This requires enabling or disabling the CRTC associated with 225 // on or off. This requires enabling or disabling the CRTC associated with
224 // the display(s) in question so that the low power state is engaged. 226 // the display(s) in question so that the low power state is engaged.
225 // |flags| contains bitwise-or-ed kSetDisplayPower* values. Returns true if 227 // |flags| contains bitwise-or-ed kSetDisplayPower* values. After the
226 // the system successfully enters (or was already in) |power_state|. 228 // configuration finishes |callback| is called with the status of the
227 void SetDisplayPower(chromeos::DisplayPowerState power_state, int flags); 229 // operation.
230 void SetDisplayPower(chromeos::DisplayPowerState power_state,
231 int flags,
232 const ConfigurationCallback& callback);
228 233
229 // Force switching the display mode to |new_state|. Returns false if 234 // Force switching the display mode to |new_state|. Returns false if
230 // switching failed (possibly because |new_state| is invalid for the 235 // switching failed (possibly because |new_state| is invalid for the
231 // current set of connected displays). 236 // current set of connected displays).
232 void SetDisplayMode(MultipleDisplayState new_state); 237 void SetDisplayMode(MultipleDisplayState new_state);
233 238
234 // NativeDisplayDelegate::Observer overrides: 239 // NativeDisplayDelegate::Observer overrides:
235 void OnConfigurationChanged() override; 240 void OnConfigurationChanged() override;
236 241
237 void AddObserver(Observer* observer); 242 void AddObserver(Observer* observer);
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
327 const std::vector<DisplayState>& displays, 332 const std::vector<DisplayState>& displays,
328 const gfx::Size& framebuffer_size, 333 const gfx::Size& framebuffer_size,
329 MultipleDisplayState new_display_state, 334 MultipleDisplayState new_display_state,
330 chromeos::DisplayPowerState new_power_state); 335 chromeos::DisplayPowerState new_power_state);
331 336
332 // Helps in identifying if a configuration task needs to be scheduled. 337 // Helps in identifying if a configuration task needs to be scheduled.
333 // Return true if any of the |requested_*| parameters have been updated. False 338 // Return true if any of the |requested_*| parameters have been updated. False
334 // otherwise. 339 // otherwise.
335 bool ShouldRunConfigurationTask() const; 340 bool ShouldRunConfigurationTask() const;
336 341
342 // Helper functions which will call the callbacks in
343 // |in_progress_configuration_callbacks_| and
344 // |queued_configuration_callbacks_| and clear the lists after. |success| is
345 // the configuration status used when calling the callbacks.
346 void CallAndClearInProgressCallbacks(bool success);
347 void CallAndClearQueuedCallbacks(bool success);
348
337 StateController* state_controller_; 349 StateController* state_controller_;
338 SoftwareMirroringController* mirroring_controller_; 350 SoftwareMirroringController* mirroring_controller_;
339 scoped_ptr<NativeDisplayDelegate> native_display_delegate_; 351 scoped_ptr<NativeDisplayDelegate> native_display_delegate_;
340 352
341 // Used to enable modes which rely on panel fitting. 353 // Used to enable modes which rely on panel fitting.
342 bool is_panel_fitting_enabled_; 354 bool is_panel_fitting_enabled_;
343 355
344 // This is detected by the constructor to determine whether or not we should 356 // This is detected by the constructor to determine whether or not we should
345 // be enabled. If we aren't running on ChromeOS, we can't assume that the 357 // be enabled. If we aren't running on ChromeOS, we can't assume that the
346 // Xrandr X11 extension is supported. 358 // Xrandr X11 extension is supported.
(...skipping 13 matching lines...) Expand all
360 372
361 // Stores the requested power state. 373 // Stores the requested power state.
362 chromeos::DisplayPowerState requested_power_state_; 374 chromeos::DisplayPowerState requested_power_state_;
363 375
364 // True if |requested_power_state_| has been changed due to a user request. 376 // True if |requested_power_state_| has been changed due to a user request.
365 bool requested_power_state_change_; 377 bool requested_power_state_change_;
366 378
367 // Bitwise-or value of the |kSetDisplayPower*| flags defined above. 379 // Bitwise-or value of the |kSetDisplayPower*| flags defined above.
368 int requested_power_flags_; 380 int requested_power_flags_;
369 381
382 // List of callbacks from callers waiting for the display configuration to
383 // start/finish. Note these callbacks belong to the pending request, not a
384 // request currently active.
385 std::vector<ConfigurationCallback> queued_configuration_callbacks_;
386
387 // List of callbacks belonging to the currently running display configuration
388 // task.
389 std::vector<ConfigurationCallback> in_progress_configuration_callbacks_;
390
370 // True if the caller wants to force the display configuration process. 391 // True if the caller wants to force the display configuration process.
371 bool force_configure_; 392 bool force_configure_;
372 393
373 // Most-recently-used display configuration. Note that the actual 394 // Most-recently-used display configuration. Note that the actual
374 // configuration changes asynchronously. 395 // configuration changes asynchronously.
375 DisplayStateList cached_displays_; 396 DisplayStateList cached_displays_;
376 397
377 // Most-recently-used framebuffer size. 398 // Most-recently-used framebuffer size.
378 gfx::Size framebuffer_size_; 399 gfx::Size framebuffer_size_;
379 400
(...skipping 19 matching lines...) Expand all
399 420
400 // This must be the last variable. 421 // This must be the last variable.
401 base::WeakPtrFactory<DisplayConfigurator> weak_ptr_factory_; 422 base::WeakPtrFactory<DisplayConfigurator> weak_ptr_factory_;
402 423
403 DISALLOW_COPY_AND_ASSIGN(DisplayConfigurator); 424 DISALLOW_COPY_AND_ASSIGN(DisplayConfigurator);
404 }; 425 };
405 426
406 } // namespace ui 427 } // namespace ui
407 428
408 #endif // UI_DISPLAY_CHROMEOS_DISPLAY_CONFIGURATOR_H_ 429 #endif // UI_DISPLAY_CHROMEOS_DISPLAY_CONFIGURATOR_H_
OLDNEW
« no previous file with comments | « chromeos/dbus/services/display_power_service_provider.cc ('k') | ui/display/chromeos/display_configurator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698