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

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

Issue 788423002: Add display task to trigger display configuration (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@async-refactor3
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
Index: ui/display/chromeos/update_display_configuration_task.h
diff --git a/ui/display/chromeos/update_display_configuration_task.h b/ui/display/chromeos/update_display_configuration_task.h
new file mode 100644
index 0000000000000000000000000000000000000000..2ce0ad8cac4b794bfeacca88552f67b81f393824
--- /dev/null
+++ b/ui/display/chromeos/update_display_configuration_task.h
@@ -0,0 +1,105 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef UI_DISPLAY_CHROMEOS_UPDATE_DISPLAY_CONFIGURATION_TASK_H_
+#define UI_DISPLAY_CHROMEOS_UPDATE_DISPLAY_CONFIGURATION_TASK_H_
+
+#include <vector>
+
+#include "base/memory/weak_ptr.h"
+#include "ui/display/chromeos/configure_displays_task.h"
+#include "ui/display/chromeos/display_configurator.h"
+
+namespace ui {
+
+class DisplaySnapshot;
+class NativeDisplayDelegate;
+
+class DISPLAY_EXPORT UpdateDisplayConfigurationTask {
+ public:
+ typedef base::Callback<void(
+ bool /* success */,
+ const std::vector<DisplayConfigurator::DisplayState>& /* displays */,
+ const gfx::Size& /* framebuffer_size */,
+ MultipleDisplayState /* new_display_state */,
+ chromeos::DisplayPowerState /* new_power_state */)> ResponseCallback;
+
+ UpdateDisplayConfigurationTask(
+ NativeDisplayDelegate* delegate,
+ DisplayConfigurator::DisplayLayoutManager* layout_manager,
+ MultipleDisplayState new_display_state,
+ chromeos::DisplayPowerState new_power_state,
+ int power_flags,
+ uint32_t background_color_argb,
+ bool force_configure,
+ const ResponseCallback& callback);
+ ~UpdateDisplayConfigurationTask();
+
+ void Run();
+
+ private:
+ // Callback to NativeDisplayDelegate::GetDisplays().
+ void OnDisplaysUpdated(const std::vector<DisplaySnapshot*>& displays);
+
+ // Callback to ConfigureDisplaysTask used to process the result of a display
+ // configuration run.
+ void OnStateEntered(ConfigureDisplaysTask::Status status);
+
+ // If the initial display configuration run failed due to errors entering
+ // mirror more, another configuration run is executed to enter software
+ // mirroring. This is the callback used to process the result of that
+ // configuration.
+ void OnEnableSoftwareMirroring(ConfigureDisplaysTask::Status status);
+
+ // Starts the configuration process. |callback| is used to continue the task
+ // after |configure_taks_| finishes executing.
+ void EnterState(const ConfigureDisplaysTask::ResponseCallback& callback);
+
+ // Finishes display configuration and runs |callback_|.
+ void FinishConfiguration(bool success);
+
+ // Returns true if the DPMS state should be force to on.
+ bool ShouldForceDpms() const;
+
+ // Returns true if a display configuration is required.
+ bool ShouldConfigure() const;
+
+ // Returns a display state based on the power state.
+ MultipleDisplayState ChooseDisplayState() const;
+
+ NativeDisplayDelegate* delegate_; // Not owned.
+ DisplayConfigurator::DisplayLayoutManager* layout_manager_; // Not owned.
+
+ // Requested display state.
+ MultipleDisplayState new_display_state_;
+
+ // Requested power state.
+ chromeos::DisplayPowerState new_power_state_;
+
+ int power_flags_;
Daniel Erat 2014/12/11 23:34:07 nit: either document the flags here or point at th
+
+ uint32_t background_color_argb_;
+
+ bool force_configure_;
+
+ // Used to signal that the task has finished.
+ ResponseCallback callback_;
+
+ bool force_dpms_;
+
+ // List of updated displays.
+ std::vector<DisplayConfigurator::DisplayState> cached_displays_;
+
+ gfx::Size framebuffer_size_;
+
+ scoped_ptr<ConfigureDisplaysTask> configure_task_;
+
+ base::WeakPtrFactory<UpdateDisplayConfigurationTask> weak_ptr_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(UpdateDisplayConfigurationTask);
+};
+
+} // namespace ui
+
+#endif // UI_DISPLAY_CHROMEOS_UPDATE_DISPLAY_CONFIGURATION_TASK_H_

Powered by Google App Engine
This is Rietveld 408576698