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

Unified Diff: ui/display/chromeos/display_configurator.h

Issue 797383002: Revert of Update DisplayConfigurator to use the asynchronous tasks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@async-refactor4
Patch Set: Created 6 years 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 | ui/display/chromeos/display_configurator.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/display/chromeos/display_configurator.h
diff --git a/ui/display/chromeos/display_configurator.h b/ui/display/chromeos/display_configurator.h
index 3c660d7b3c8c8b23ab8f82faa777f275794456e2..cfef0bdb620f0114f9f4d2f43a7c5f579aacccfd 100644
--- a/ui/display/chromeos/display_configurator.h
+++ b/ui/display/chromeos/display_configurator.h
@@ -13,7 +13,6 @@
#include "base/event_types.h"
#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
#include "base/observer_list.h"
#include "base/timer/timer.h"
#include "third_party/cros_system_api/dbus/service_constants.h"
@@ -32,7 +31,6 @@
class DisplayMode;
class DisplaySnapshot;
class NativeDisplayDelegate;
-class UpdateDisplayConfigurationTask;
// This class interacts directly with the system display configurator.
class DISPLAY_EXPORT DisplayConfigurator : public NativeDisplayObserver {
@@ -174,7 +172,7 @@
DisplayConfigurator();
virtual ~DisplayConfigurator();
- MultipleDisplayState display_state() const { return current_display_state_; }
+ MultipleDisplayState display_state() const { return display_state_; }
chromeos::DisplayPowerState requested_power_state() const {
return requested_power_state_;
}
@@ -224,12 +222,12 @@
// the display(s) in question so that the low power state is engaged.
// |flags| contains bitwise-or-ed kSetDisplayPower* values. Returns true if
// the system successfully enters (or was already in) |power_state|.
- void SetDisplayPower(chromeos::DisplayPowerState power_state, int flags);
+ bool SetDisplayPower(chromeos::DisplayPowerState power_state, int flags);
// Force switching the display mode to |new_state|. Returns false if
// switching failed (possibly because |new_state| is invalid for the
// current set of connected displays).
- void SetDisplayMode(MultipleDisplayState new_state);
+ bool SetDisplayMode(MultipleDisplayState new_state);
// NativeDisplayDelegate::Observer overrides:
virtual void OnConfigurationChanged() override;
@@ -281,8 +279,6 @@
ui::ColorCalibrationProfile new_profile);
private:
- class DisplayLayoutManagerImpl;
-
// Mapping a display_id to a protection request bitmask.
typedef std::map<int64_t, uint32_t> ContentProtections;
// Mapping a client to its protection request.
@@ -292,6 +288,29 @@
// Performs platform specific delegate initialization.
scoped_ptr<NativeDisplayDelegate> CreatePlatformNativeDisplayDelegate();
+ // Updates |cached_displays_| to contain currently-connected displays. Calls
+ // |delegate_->GetDisplays()| and then does additional work, like finding the
+ // mirror mode and setting user-preferred modes. Note that the server must be
+ // grabbed via |delegate_->GrabServer()| first.
+ void UpdateCachedDisplays();
+
+ // Helper method for UpdateCachedDisplays() that initializes the passed-in
+ // displays' |mirror_mode| fields by looking for a mode in |internal_display|
+ // and |external_display| having the same resolution. Returns false if a
+ // shared
+ // mode wasn't found or created.
+ //
+ // |try_panel_fitting| allows creating a panel-fitting mode for
+ // |internal_display| instead of only searching for a matching mode (note that
+ // it may lead to a crash if |internal_info| is not capable of panel fitting).
+ //
+ // |preserve_aspect| limits the search/creation only to the modes having the
+ // native aspect ratio of |external_display|.
+ bool FindMirrorMode(DisplayState* internal_display,
+ DisplayState* external_display,
+ bool try_panel_fitting,
+ bool preserve_aspect);
+
// Configures displays. Invoked by |configure_timer_|.
void ConfigureDisplays();
@@ -301,6 +320,22 @@
// Notifies observers about an attempted state change.
void NotifyObservers(bool success, MultipleDisplayState attempted_state);
+
+ // Switches to the state specified in |display_state| and |power_state|.
+ // If the hardware mirroring failed and |mirroring_controller_| is set,
+ // it switches to |STATE_DUAL_EXTENDED| and calls |SetSoftwareMirroring()|
+ // to enable software based mirroring.
+ // On success, updates |display_state_|, |power_state_|, and
+ // |cached_displays_| and returns true.
+ bool EnterStateOrFallBackToSoftwareMirroring(
+ MultipleDisplayState display_state,
+ chromeos::DisplayPowerState power_state);
+
+ // Switches to the state specified in |display_state| and |power_state|.
+ // On success, updates |display_state_|, |power_state_|, and
+ // |cached_displays_| and returns true.
+ bool EnterState(MultipleDisplayState display_state,
+ chromeos::DisplayPowerState power_state);
// Returns the display state that should be used with |cached_displays_| while
// in |power_state|.
@@ -316,23 +351,6 @@
// Applies display protections according to requests.
bool ApplyProtections(const ContentProtections& requests);
-
- // If |configuration_task_| isn't initialized, initializes it and starts the
- // configuration task.
- void RunPendingConfiguration();
-
- // Callback for |configuration_taks_|. When the configuration process finishes
- // this is called with the result (|success|) and the updated display state.
- void OnConfigured(bool success,
- const std::vector<DisplayState>& displays,
- const gfx::Size& framebuffer_size,
- MultipleDisplayState new_display_state,
- chromeos::DisplayPowerState new_power_state);
-
- // Helps in identifying if a configuration task needs to be scheduled.
- // Return true if any of the |requested_*| parameters have been updated. False
- // otherwise.
- bool ShouldRunConfigurationTask() const;
StateController* state_controller_;
SoftwareMirroringController* mirroring_controller_;
@@ -348,34 +366,20 @@
// configuration to immediately fail without changing the state.
bool configure_display_;
- // Current configuration state.
- MultipleDisplayState current_display_state_;
+ // The current display state.
+ MultipleDisplayState display_state_;
+
+ gfx::Size framebuffer_size_;
+
+ // The last-requested and current power state. These may differ if
+ // configuration fails: SetDisplayMode() needs the last-requested state while
+ // SetDisplayPower() needs the current state.
+ chromeos::DisplayPowerState requested_power_state_;
chromeos::DisplayPowerState current_power_state_;
-
- // Pending requests. These values are used when triggering the next display
- // configuration.
- //
- // Stores the user requested state or INVALID if nothing was requested.
- MultipleDisplayState requested_display_state_;
-
- // Stores the requested power state.
- chromeos::DisplayPowerState requested_power_state_;
-
- // True if |requested_power_state_| has been changed due to a user request.
- bool requested_power_state_change_;
-
- // Bitwise-or value of the |kSetDisplayPower*| flags defined above.
- int requested_power_flags_;
-
- // True if the caller wants to force the display configuration process.
- bool force_configure_;
// Most-recently-used display configuration. Note that the actual
// configuration changes asynchronously.
DisplayStateList cached_displays_;
-
- // Most-recently-used framebuffer size.
- gfx::Size framebuffer_size_;
ObserverList<Observer> observers_;
@@ -393,13 +397,6 @@
// Display controlled by an external entity.
bool display_externally_controlled_;
- scoped_ptr<DisplayLayoutManager> layout_manager_;
-
- scoped_ptr<UpdateDisplayConfigurationTask> configuration_task_;
-
- // This must be the last variable.
- base::WeakPtrFactory<DisplayConfigurator> weak_ptr_factory_;
-
DISALLOW_COPY_AND_ASSIGN(DisplayConfigurator);
};
« no previous file with comments | « no previous file | ui/display/chromeos/display_configurator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698