Index: ash/display/mirror_window_controller.h |
diff --git a/ash/display/mirror_window_controller.h b/ash/display/mirror_window_controller.h |
index 8bef88a923aad68c5065ccdb831397b5d7845f3b..9f38102bc4aaa0edb478f48bd77a462f72fbc96b 100644 |
--- a/ash/display/mirror_window_controller.h |
+++ b/ash/display/mirror_window_controller.h |
@@ -9,6 +9,7 @@ |
#include <vector> |
#include "ash/ash_export.h" |
+#include "ash/display/display_manager.h" |
#include "base/compiler_specific.h" |
#include "base/memory/ref_counted.h" |
#include "base/memory/scoped_ptr.h" |
@@ -57,8 +58,8 @@ class ASH_EXPORT MirrorWindowController : public aura::WindowTreeHostObserver { |
// for the mirrored display. |
void UpdateWindow(); |
- // Close the mirror window. |
- void Close(); |
+ // Close the mirror window if they're not necessary any longer. |
+ void CloseIfNotNecessary(); |
// aura::WindowTreeHostObserver overrides: |
void OnHostResized(const aura::WindowTreeHost* host) override; |
@@ -81,7 +82,13 @@ class ASH_EXPORT MirrorWindowController : public aura::WindowTreeHostObserver { |
struct MirroringHostInfo; |
- void CloseAndDeleteHost(MirroringHostInfo* host_info); |
+ // Close the mirror window. When |delay_host_deletion| is true, the window |
+ // tree host will be deleted in an another task on UI thread. This is |
+ // necessary to safely delete the WTH that is currently handling input events. |
+ void Close(bool delay_host_deletion); |
+ |
+ void CloseAndDeleteHost(MirroringHostInfo* host_info, |
+ bool delay_host_deletion); |
// Creates a RootWindowTransformer for current display |
// configuration. |
@@ -90,6 +97,8 @@ class ASH_EXPORT MirrorWindowController : public aura::WindowTreeHostObserver { |
typedef std::map<int64_t, MirroringHostInfo*> MirroringHostInfoMap; |
MirroringHostInfoMap mirroring_host_info_map_; |
+ DisplayManager::MultiDisplayMode multi_display_mode_; |
+ |
scoped_ptr<aura::client::ScreenPositionClient> screen_position_client_; |
scoped_ptr<ui::Reflector> reflector_; |