19
19
#include " mir/time/alarm_factory.h"
20
20
#include " mir/time/clock.h"
21
21
#include " mir/executor.h"
22
+ #include " mir/log.h"
22
23
#include < chrono>
23
24
24
25
namespace mg = mir::graphics;
25
26
26
27
mg::DefaultInitialRenderManager::DefaultInitialRenderManager (
27
28
std::shared_ptr<Executor> const & scene_executor,
28
- std::shared_ptr<time::Clock>& clock,
29
- time::AlarmFactory & alarm_factory,
30
- std::shared_ptr<input::Scene>& scene)
29
+ std::shared_ptr<time::Clock> const & clock,
30
+ time::AlarmFactory& alarm_factory,
31
+ std::shared_ptr<input::Scene> const & scene)
31
32
: scene_executor{scene_executor},
32
33
clock{clock },
33
34
scene{scene},
@@ -49,24 +50,36 @@ void mg::DefaultInitialRenderManager::add_initial_render(std::shared_ptr<Initial
49
50
if (!initial_render)
50
51
return ;
51
52
53
+ if (!scene)
54
+ {
55
+ mir::log_error (" Unable to add the initial renderables because the scene does not exist" );
56
+ return ;
57
+ }
58
+
52
59
for (auto const & renderable : initial_render->get_renderables ())
53
60
{
54
- scene_executor->spawn ([scene = scene, to_add = renderable]()
55
- {
56
- scene->add_input_visualization (to_add);
57
- });
61
+ scene->add_input_visualization (renderable);
58
62
renderable_list.push_back (renderable);
59
63
}
60
64
}
61
65
62
66
void mg::DefaultInitialRenderManager::remove_renderables ()
63
67
{
64
- for ( auto const & renderable : renderable_list )
68
+ if (!scene_executor )
65
69
{
66
- scene_executor->spawn ([scene = scene, to_remove = renderable]()
67
- {
68
- scene->remove_input_visualization (to_remove);
69
- });
70
+ mir::log_error (" Unable to remove the initial renderables because the executor does not exist" );
71
+ return ;
70
72
}
71
- renderable_list.clear ();
73
+
74
+ if (!scene)
75
+ {
76
+ mir::log_error (" Unable to remove the initial renerables because the scene does not exist" );
77
+ return ;
78
+ }
79
+
80
+ scene_executor->spawn ([the_scene = scene, to_remove = renderable_list]()
81
+ {
82
+ for (auto const & renderable : to_remove)
83
+ the_scene->remove_input_visualization (renderable);
84
+ });
72
85
}
0 commit comments