19 #ifndef MIR_SURFACES_SURFACESTACK_H_
20 #define MIR_SURFACES_SURFACESTACK_H_
37 class RenderableCollection;
39 class OperatorForScene;
44 struct SurfaceCreationParameters;
49 class InputChannelFactory;
64 explicit SurfaceStack(std::shared_ptr<SurfaceFactory>
const& surface_factory,
65 std::shared_ptr<InputRegistrar>
const& input_registrar);
75 void for_each(std::function<
void(std::shared_ptr<input::InputChannel>
const&)>
const& callback);
82 virtual void raise(std::weak_ptr<Surface>
const& surface);
91 void emit_change_notification();
93 std::recursive_mutex guard;
94 std::shared_ptr<SurfaceFactory>
const surface_factory;
95 std::shared_ptr<InputRegistrar>
const input_registrar;
97 typedef std::vector<std::shared_ptr<Surface>> Layer;
98 std::map<DepthId, Layer> layers_by_depth;
100 std::mutex notify_change_mutex;
101 std::function<void()> notify_change;