| 278 | } |
| 279 | |
| 280 | void wf::compositor_core_impl_t::post_init() |
| 281 | { |
| 282 | discard_command_output.load_option("workarounds/discard_command_output"); |
| 283 | |
| 284 | core_backend_started_signal backend_started_ev; |
| 285 | this->emit(&backend_started_ev); |
| 286 | this->state = compositor_state_t::START_PLUGINS; |
| 287 | plugin_mgr = std::make_unique<wf::plugin_manager_t>(); |
| 288 | this->bindings->reparse_extensions(); |
| 289 | |
| 290 | this->state = compositor_state_t::RUNNING; |
| 291 | // Move pointer to the middle of the leftmost, topmost output |
| 292 | wf::pointf_t p; |
| 293 | wf::output_t *wo = wf::get_core().output_layout->get_output_coords_at({FLT_MIN, FLT_MIN}, p); |
| 294 | // Output might be noop but guaranteed to not be null |
| 295 | wo->ensure_pointer(true); |
| 296 | seat->focus_output(wo); |
| 297 | |
| 298 | // Refresh device mappings when we have all outputs and devices |
| 299 | input->configure_input_devices(); |
| 300 | |
| 301 | // Start processing cursor events |
| 302 | seat->priv->cursor->setup_listeners(); |
| 303 | core_startup_finished_signal startup_ev; |
| 304 | this->emit(&startup_ev); |
| 305 | } |
| 306 | |
| 307 | void wf::compositor_core_impl_t::shutdown() |
| 308 | { |
no test coverage detected