Index: components/surfaces/surfaces_service_application.h |
diff --git a/components/surfaces/surfaces_service_application.h b/components/surfaces/surfaces_service_application.h |
index 9101c9d10ce962765a1b87b88251fa12a1d73638..edf098d85238f55f755a512cd5829e14d968f8d0 100644 |
--- a/components/surfaces/surfaces_service_application.h |
+++ b/components/surfaces/surfaces_service_application.h |
@@ -5,6 +5,8 @@ |
#ifndef COMPONENTS_SURFACES_SURFACES_SERVICE_APPLICATION_H_ |
#define COMPONENTS_SURFACES_SURFACES_SERVICE_APPLICATION_H_ |
+#include <set> |
+ |
#include "base/macros.h" |
#include "cc/surfaces/surface_manager.h" |
#include "components/surfaces/public/interfaces/display.mojom.h" |
@@ -18,6 +20,8 @@ class ApplicationConnection; |
} |
namespace surfaces { |
+class DisplayFactoryImpl; |
+class SurfacesImpl; |
class SurfacesScheduler; |
class SurfacesServiceApplication |
@@ -41,12 +45,20 @@ class SurfacesServiceApplication |
void Create(mojo::ApplicationConnection* connection, |
mojo::InterfaceRequest<mojo::Surface> request) override; |
+ void DisplayFactoryDestroyed(DisplayFactoryImpl* display_factory); |
+ void SurfaceDestroyed(SurfacesImpl* surface); |
+ |
private: |
cc::SurfaceManager manager_; |
uint32_t next_id_namespace_; |
scoped_ptr<SurfacesScheduler> scheduler_; |
mojo::TracingImpl tracing_; |
+ // Since these two classes have non-owning pointers to |manager_|, need to |
+ // destroy them if this class is destructed first. |
+ std::set<DisplayFactoryImpl*> display_factories_; |
+ std::set<SurfacesImpl*> surfaces_; |
+ |
DISALLOW_COPY_AND_ASSIGN(SurfacesServiceApplication); |
}; |