Home | History | Annotate | Download | only in display
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef ASH_DISPLAY_DISPLAY_CHANGE_OBSERVER_X11_H
      6 #define ASH_DISPLAY_DISPLAY_CHANGE_OBSERVER_X11_H
      7 
      8 #include <X11/Xlib.h>
      9 
     10 // Xlib.h defines RootWindow.
     11 #undef RootWindow
     12 
     13 #include "ash/ash_export.h"
     14 #include "ash/shell_observer.h"
     15 #include "base/basictypes.h"
     16 #include "chromeos/display/output_configurator.h"
     17 
     18 namespace ash {
     19 namespace internal {
     20 
     21 // An object that observes changes in display configuration and
     22 // update DisplayManagers.
     23 class DisplayChangeObserverX11
     24     : public chromeos::OutputConfigurator::StateController,
     25       public chromeos::OutputConfigurator::Observer,
     26       public ShellObserver {
     27  public:
     28   DisplayChangeObserverX11();
     29   virtual ~DisplayChangeObserverX11();
     30 
     31   // chromeos::OutputConfigurator::StateController overrides:
     32   virtual chromeos::OutputState GetStateForDisplayIds(
     33       const std::vector<int64>& outputs) const OVERRIDE;
     34   virtual bool GetResolutionForDisplayId(int64 display_id,
     35                                          int* width,
     36                                          int* height) const OVERRIDE;
     37 
     38   // Overriden from chromeos::OutputConfigurator::Observer:
     39   virtual void OnDisplayModeChanged() OVERRIDE;
     40 
     41   // Overriden from ShellObserver:
     42   virtual void OnAppTerminating() OVERRIDE;
     43 
     44  private:
     45   Display* xdisplay_;
     46 
     47   ::Window x_root_window_;
     48 
     49   int xrandr_event_base_;
     50 
     51   DISALLOW_COPY_AND_ASSIGN(DisplayChangeObserverX11);
     52 };
     53 
     54 }  // namespace internal
     55 }  // namespace ash
     56 
     57 #endif  // ASH_DISPLAY_AURA_DISPLAY_CHANGE_OBSERVER_X11_H
     58