Index: ui/display/chromeos/x11/native_display_delegate_x11.cc |
diff --git a/ui/display/chromeos/x11/native_display_delegate_x11.cc b/ui/display/chromeos/x11/native_display_delegate_x11.cc |
index 5f19ae6312a0a50887fddc7c5c9d89a5dbc592c7..37cdd76ac8b8e5fbcb56fcd4e95ac5776bf64f21 100644 |
--- a/ui/display/chromeos/x11/native_display_delegate_x11.cc |
+++ b/ui/display/chromeos/x11/native_display_delegate_x11.cc |
@@ -20,7 +20,8 @@ |
#include "ui/display/chromeos/x11/native_display_event_dispatcher_x11.h" |
#include "ui/display/types/chromeos/native_display_observer.h" |
#include "ui/display/util/x11/edid_parser_x11.h" |
-#include "ui/events/platform/platform_event_observer.h" |
+#include "ui/events/device_data_manager.h" |
+#include "ui/events/input_device_event_observer.h" |
#include "ui/events/platform/platform_event_source.h" |
#include "ui/gfx/geometry/rect.h" |
#include "ui/gfx/x/x11_error_tracker.h" |
@@ -71,6 +72,23 @@ XRRCrtcGamma* ResampleGammaRamp(XRRCrtcGamma* gamma_ramp, int gamma_ramp_size) { |
return resampled; |
} |
+class InputHotplugEventObserver : public InputDeviceEventObserver { |
+ public: |
+ InputHotplugEventObserver(NativeDisplayDelegateX11::HelperDelegate* delegate) |
Daniel Erat
2014/09/10 16:51:24
nit: add 'explicit'
dnicoara
2014/09/10 18:05:36
Done.
|
+ : delegate_(delegate) {} |
+ virtual ~InputHotplugEventObserver() {} |
+ |
+ // InputDeviceEventObserver: |
+ virtual void OnInputDeviceConfigurationChanged() OVERRIDE { |
+ delegate_->NotifyDisplayObservers(); |
+ } |
+ |
+ private: |
+ NativeDisplayDelegateX11::HelperDelegate* delegate_; // Not owned. |
+ |
+ DISALLOW_COPY_AND_ASSIGN(InputHotplugEventObserver); |
+}; |
+ |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -103,48 +121,6 @@ class NativeDisplayDelegateX11::HelperDelegateX11 |
}; |
//////////////////////////////////////////////////////////////////////////////// |
-// NativeDisplayDelegateX11::PlatformEventObserverX11 |
- |
-class NativeDisplayDelegateX11::PlatformEventObserverX11 |
- : public PlatformEventObserver { |
- public: |
- PlatformEventObserverX11(HelperDelegate* delegate); |
- virtual ~PlatformEventObserverX11(); |
- |
- // PlatformEventObserverX11: |
- virtual void WillProcessEvent(const ui::PlatformEvent& event) OVERRIDE; |
- virtual void DidProcessEvent(const ui::PlatformEvent& event) OVERRIDE; |
- |
- private: |
- HelperDelegate* delegate_; // Not owned. |
- |
- DISALLOW_COPY_AND_ASSIGN(PlatformEventObserverX11); |
-}; |
- |
-NativeDisplayDelegateX11::PlatformEventObserverX11::PlatformEventObserverX11( |
- HelperDelegate* delegate) |
- : delegate_(delegate) {} |
- |
-NativeDisplayDelegateX11::PlatformEventObserverX11:: |
- ~PlatformEventObserverX11() {} |
- |
-void NativeDisplayDelegateX11::PlatformEventObserverX11::WillProcessEvent( |
- const ui::PlatformEvent& event) { |
- // XI_HierarchyChanged events are special. There is no window associated with |
- // these events. So process them directly from here. |
- if (event->type == GenericEvent && |
- event->xgeneric.evtype == XI_HierarchyChanged) { |
- VLOG(1) << "Received XI_HierarchyChanged event"; |
- // Defer configuring outputs to not stall event processing. |
- // This also takes care of same event being received twice. |
- delegate_->NotifyDisplayObservers(); |
- } |
-} |
- |
-void NativeDisplayDelegateX11::PlatformEventObserverX11::DidProcessEvent( |
- const ui::PlatformEvent& event) {} |
- |
-//////////////////////////////////////////////////////////////////////////////// |
// NativeDisplayDelegateX11 implementation: |
NativeDisplayDelegateX11::NativeDisplayDelegateX11() |
@@ -157,10 +133,11 @@ NativeDisplayDelegateX11::~NativeDisplayDelegateX11() { |
if (ui::PlatformEventSource::GetInstance()) { |
ui::PlatformEventSource::GetInstance()->RemovePlatformEventDispatcher( |
platform_event_dispatcher_.get()); |
- ui::PlatformEventSource::GetInstance()->RemovePlatformEventObserver( |
- platform_event_observer_.get()); |
} |
+ ui::DeviceDataManager::GetInstance()->RemoveObserver( |
Daniel Erat
2014/09/10 16:51:24
wrap this in an "if (input_hotplug_observer_)" cla
dnicoara
2014/09/10 18:05:36
Done.
|
+ input_hotplug_observer_.get()); |
+ |
STLDeleteContainerPairSecondPointers(modes_.begin(), modes_.end()); |
} |
@@ -172,17 +149,14 @@ void NativeDisplayDelegateX11::Initialize() { |
helper_delegate_.reset(new HelperDelegateX11(this)); |
platform_event_dispatcher_.reset(new NativeDisplayEventDispatcherX11( |
helper_delegate_.get(), xrandr_event_base)); |
- platform_event_observer_.reset( |
- new PlatformEventObserverX11(helper_delegate_.get())); |
+ input_hotplug_observer_.reset( |
+ new InputHotplugEventObserver(helper_delegate_.get())); |
+ ui::DeviceDataManager::GetInstance()->AddObserver( |
+ input_hotplug_observer_.get()); |
if (ui::PlatformEventSource::GetInstance()) { |
ui::PlatformEventSource::GetInstance()->AddPlatformEventDispatcher( |
platform_event_dispatcher_.get()); |
- |
- // We can't do this with a root window listener because XI_HierarchyChanged |
- // messages don't have a target window. |
- ui::PlatformEventSource::GetInstance()->AddPlatformEventObserver( |
- platform_event_observer_.get()); |
} |
} |