| Index: chromeos/monitor/output_configurator.h
|
| diff --git a/chromeos/monitor/output_configurator.h b/chromeos/monitor/output_configurator.h
|
| deleted file mode 100644
|
| index b98bcb467a884d3bacb1dd3485e2f3dbeebd8ffb..0000000000000000000000000000000000000000
|
| --- a/chromeos/monitor/output_configurator.h
|
| +++ /dev/null
|
| @@ -1,165 +0,0 @@
|
| -// Copyright (c) 2012 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 CHROMEOS_MONITOR_OUTPUT_CONFIGURATOR_H_
|
| -#define CHROMEOS_MONITOR_OUTPUT_CONFIGURATOR_H_
|
| -#pragma once
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/event_types.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "base/message_loop.h"
|
| -#include "chromeos/chromeos_export.h"
|
| -
|
| -// Forward declarations for Xlib and Xrandr.
|
| -// This is so unused X definitions don't pollute the namespace.
|
| -typedef unsigned long XID;
|
| -typedef XID Window;
|
| -typedef XID RROutput;
|
| -typedef XID RRCrtc;
|
| -typedef XID RRMode;
|
| -
|
| -struct _XRRScreenResources;
|
| -typedef _XRRScreenResources XRRScreenResources;
|
| -
|
| -namespace chromeos {
|
| -
|
| -// The information we need to cache from an output to implement operations such
|
| -// as power state but also to eliminate duplicate operations within a given
|
| -// action (determining which CRTC to use for a given output, for example).
|
| -struct CachedOutputDescription {
|
| - RROutput output;
|
| - RRCrtc crtc;
|
| - RRMode mirror_mode;
|
| - RRMode ideal_mode;
|
| - int x;
|
| - int y;
|
| - bool is_connected;
|
| - bool is_powered_on;
|
| - bool is_internal;
|
| - unsigned long mm_width;
|
| - unsigned long mm_height;
|
| -};
|
| -
|
| -// Used to describe the state of a multi-monitor configuration.
|
| -enum State {
|
| - STATE_INVALID,
|
| - STATE_HEADLESS,
|
| - STATE_SINGLE,
|
| - STATE_DUAL_MIRROR,
|
| - STATE_DUAL_PRIMARY_ONLY,
|
| - STATE_DUAL_SECONDARY_ONLY,
|
| -};
|
| -
|
| -// This class interacts directly with the underlying Xrandr API to manipulate
|
| -// CTRCs and Outputs. It will likely grow more state, over time, or expose
|
| -// Output info in other ways as more of the Chrome display code grows up around
|
| -// it.
|
| -class CHROMEOS_EXPORT OutputConfigurator : public MessageLoop::Dispatcher {
|
| - public:
|
| - OutputConfigurator();
|
| - virtual ~OutputConfigurator();
|
| -
|
| - State output_state() const { return output_state_; }
|
| -
|
| - // Called when the user hits ctrl-F4 to request a display mode change.
|
| - // This method should only return false if it was called in a single-head or
|
| - // headless mode.
|
| - bool CycleDisplayMode();
|
| -
|
| - // Called when powerd notifies us that some set of displays should be turned
|
| - // on or off. This requires enabling or disabling the CRTC associated with
|
| - // the display(s) in question so that the low power state is engaged.
|
| - bool ScreenPowerSet(bool power_on, bool all_displays);
|
| -
|
| - // Force switching the display mode to |new_state|. This method is used when
|
| - // the user explicitly changes the display mode in the options UI. Returns
|
| - // false if it was called in a single-head or headless mode.
|
| - bool SetDisplayMode(State new_state);
|
| -
|
| - // Called when an RRNotify event is received. The implementation is
|
| - // interested in the cases of RRNotify events which correspond to output
|
| - // add/remove events. Note that Output add/remove events are sent in response
|
| - // to our own reconfiguration operations so spurious events are common.
|
| - // Spurious events will have no effect.
|
| - virtual bool Dispatch(const base::NativeEvent& event) OVERRIDE;
|
| -
|
| - private:
|
| - // Updates |output_count_|, |output_cache_|, |mirror_supported_|,
|
| - // |primary_output_index_|, and |secondary_output_index_| with new data.
|
| - // Returns true if the update succeeded or false if it was skipped since no
|
| - // actual change was observed.
|
| - // Note that |output_state_| is not updated by this call.
|
| - bool TryRecacheOutputs(Display* display, XRRScreenResources* screen);
|
| -
|
| - // Uses the data stored in |output_cache_| and the given |new_state| to
|
| - // configure the Xrandr interface and then updates |output_state_| to reflect
|
| - // the new state.
|
| - void UpdateCacheAndXrandrToState(Display* display,
|
| - XRRScreenResources* screen,
|
| - Window window,
|
| - State new_state);
|
| -
|
| - // A helper to re-cache instance variable state and transition into the
|
| - // appropriate default state for the observed displays.
|
| - bool RecacheAndUseDefaultState();
|
| -
|
| - // Checks the |primary_output_index_|, |secondary_output_index_|, and
|
| - // |mirror_supported_| to see how many displays are currently connected and
|
| - // returns the state which is most appropriate as a default state for those
|
| - // displays.
|
| - State GetDefaultState() const;
|
| -
|
| - // Called during start-up to determine what the current state of the displays
|
| - // appears to be, by investigating how the outputs compare to the data stored
|
| - // in |output_cache_|. Returns STATE_INVALID if the current display state
|
| - // doesn't match any supported state. |output_cache_| must be up-to-date with
|
| - // regards to the state of X or this method may return incorrect results.
|
| - State InferCurrentState(Display* display, XRRScreenResources* screen) const;
|
| -
|
| - // Scans the |output_cache_| to determine whether or not we are in a
|
| - // "projecting" state and then calls the DBus kSetIsProjectingMethod on powerd
|
| - // with the result.
|
| - void CheckIsProjectingAndNotify();
|
| -
|
| - // This is detected by the constructor to determine whether or not we should
|
| - // be enabled. If we aren't running on ChromeOS, we can't assume that the
|
| - // Xrandr X11 extension is supported.
|
| - // If this flag is set to false, any attempts to change the output
|
| - // configuration to immediately fail without changing the state.
|
| - bool is_running_on_chrome_os_;
|
| -
|
| - // The number of outputs in the output_cache_ array.
|
| - int output_count_;
|
| -
|
| - // The list of cached output descriptions (|output_count_| elements long).
|
| - scoped_array<CachedOutputDescription> output_cache_;
|
| -
|
| - // True if |output_cache_| describes a permutation of outputs which support a
|
| - // mirrored device mode.
|
| - bool mirror_supported_;
|
| -
|
| - // The index of the primary connected output in |output_cache_|. -1 if there
|
| - // is no primary output. This implies the machine currently has no outputs.
|
| - int primary_output_index_;
|
| -
|
| - // The index of the secondary connected output in |output_cache_|. -1 if
|
| - // there is no secondary output. This implies the machine currently has one
|
| - // output.
|
| - int secondary_output_index_;
|
| -
|
| - // The base of the event numbers used to represent XRandr events used in
|
| - // decoding events regarding output add/remove.
|
| - int xrandr_event_base_;
|
| -
|
| - // The display state as derived from the outputs observed in |output_cache_|.
|
| - // This is used for rotating display modes.
|
| - State output_state_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(OutputConfigurator);
|
| -};
|
| -
|
| -} // namespace chromeos
|
| -
|
| -#endif // CHROMEOS_MONITOR_OUTPUT_CONFIGURATOR_H_
|
|
|