Index: ui/ozone/platform/dri/native_display_delegate_proxy.cc |
diff --git a/ui/ozone/platform/dri/native_display_delegate_proxy.cc b/ui/ozone/platform/dri/native_display_delegate_proxy.cc |
index 95600d2464369a701c0cb3f92e6582e50c25f80d..f6e3fbda2d73eaf412bed78c9e560e8e7c3a1506 100644 |
--- a/ui/ozone/platform/dri/native_display_delegate_proxy.cc |
+++ b/ui/ozone/platform/dri/native_display_delegate_proxy.cc |
@@ -12,14 +12,40 @@ |
#include "ui/ozone/common/display_snapshot_proxy.h" |
#include "ui/ozone/common/display_util.h" |
#include "ui/ozone/common/gpu/ozone_gpu_messages.h" |
+#include "ui/ozone/platform/dri/display_manager.h" |
#include "ui/ozone/platform/dri/dri_gpu_platform_support_host.h" |
namespace ui { |
+namespace { |
+ |
+class DriDisplaySnapshotProxy : public DisplaySnapshotProxy { |
+ public: |
+ DriDisplaySnapshotProxy(const DisplaySnapshot_Params& params, |
+ DisplayManager* display_manager) |
+ : DisplaySnapshotProxy(params), display_manager_(display_manager) { |
+ display_manager_->RegisterDisplay(this); |
+ } |
+ |
+ virtual ~DriDisplaySnapshotProxy() { |
+ display_manager_->UnregisterDisplay(this); |
+ } |
+ |
+ private: |
+ DisplayManager* display_manager_; // Not owned. |
+ |
+ DISALLOW_COPY_AND_ASSIGN(DriDisplaySnapshotProxy); |
+}; |
+ |
+} // namespace |
+ |
NativeDisplayDelegateProxy::NativeDisplayDelegateProxy( |
DriGpuPlatformSupportHost* proxy, |
- DeviceManager* device_manager) |
- : proxy_(proxy), device_manager_(device_manager) { |
+ DeviceManager* device_manager, |
+ DisplayManager* display_manager) |
+ : proxy_(proxy), |
+ device_manager_(device_manager), |
+ display_manager_(display_manager) { |
proxy_->RegisterHandler(this); |
} |
@@ -153,7 +179,8 @@ void NativeDisplayDelegateProxy::OnUpdateNativeDisplays( |
const std::vector<DisplaySnapshot_Params>& displays) { |
displays_.clear(); |
for (size_t i = 0; i < displays.size(); ++i) |
- displays_.push_back(new DisplaySnapshotProxy(displays[i])); |
+ displays_.push_back( |
+ new DriDisplaySnapshotProxy(displays[i], display_manager_)); |
FOR_EACH_OBSERVER( |
NativeDisplayObserver, observers_, OnConfigurationChanged()); |