~alan-griffiths/mir/fix-1654023

« back to all changes in this revision

Viewing changes to src/include/server/mir/default_server_configuration.h

  • Committer: Daniel van Vugt
  • Date: 2015-02-22 07:46:25 UTC
  • mfrom: (2332 development-branch)
  • mto: This revision was merged to the branch mainline in revision 2673.
  • Revision ID: daniel.van.vugt@canonical.com-20150222074625-8t23m2sif3dc0j3t
Merge latest trunk and fix conflicts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
40
40
namespace mir
41
41
{
42
42
class ServerActionQueue;
 
43
class SharedLibraryProberReport;
43
44
 
44
45
namespace compositor
45
46
{
75
76
class FocusController;
76
77
class DisplayLayout;
77
78
class HostLifecycleEventListener;
 
79
class Shell;
 
80
namespace detail { class FrontendShell; }
78
81
}
79
82
namespace time
80
83
{
105
108
}
106
109
namespace graphics
107
110
{
108
 
class NativePlatform;
109
111
class Platform;
110
112
class Display;
111
113
class DisplayReport;
112
114
class GraphicBufferAllocator;
113
 
class BufferWriter;
114
115
class Cursor;
115
116
class CursorImage;
116
117
class GLConfig;
193
194
    virtual std::shared_ptr<graphics::DisplayConfigurationPolicy> the_display_configuration_policy();
194
195
    virtual std::shared_ptr<graphics::nested::HostConnection> the_host_connection();
195
196
    virtual std::shared_ptr<graphics::GLConfig> the_gl_config();
196
 
    virtual std::shared_ptr<graphics::NativePlatform>  the_graphics_native_platform();
197
197
    /** @} */
198
198
 
199
199
    /** @name graphics configuration - dependencies
211
211
     *  @{ */
212
212
    virtual std::shared_ptr<compositor::CompositorReport> the_compositor_report();
213
213
    virtual std::shared_ptr<compositor::DisplayBufferCompositorFactory> the_display_buffer_compositor_factory();
 
214
    virtual std::shared_ptr<compositor::DisplayBufferCompositorFactory> wrap_display_buffer_compositor_factory(
 
215
        std::shared_ptr<compositor::DisplayBufferCompositorFactory> const& wrapped);
214
216
    /** @} */
215
217
 
216
218
    /** @name compositor configuration - dependencies
217
219
     * dependencies of compositor on the rest of the Mir
218
220
     *  @{ */
219
221
    virtual std::shared_ptr<graphics::GraphicBufferAllocator> the_buffer_allocator();
220
 
    virtual std::shared_ptr<graphics::BufferWriter> the_buffer_writer();
221
222
    virtual std::shared_ptr<compositor::Scene>                  the_scene();
222
223
    virtual std::shared_ptr<compositor::FrameDroppingPolicyFactory> the_frame_dropping_policy_factory();
223
224
    /** @} */
228
229
    virtual std::shared_ptr<frontend::SessionMediatorReport>  the_session_mediator_report();
229
230
    virtual std::shared_ptr<frontend::MessageProcessorReport> the_message_processor_report();
230
231
    virtual std::shared_ptr<frontend::SessionAuthorizer>      the_session_authorizer();
231
 
    // the_frontend_shell() is an adapter for the_session_coordinator().
232
 
    // To customize this behaviour it is recommended you override wrap_session_coordinator().
 
232
    // the_frontend_shell() is an adapter for the_shell().
 
233
    // To customize this behaviour it is recommended you override wrap_shell().
233
234
    std::shared_ptr<frontend::Shell>                          the_frontend_shell();
234
235
    virtual std::shared_ptr<frontend::EventSink>              the_global_event_sink();
235
236
    virtual std::shared_ptr<frontend::DisplayChanger>         the_frontend_display_changer();
243
244
    /** @} */
244
245
    /** @} */
245
246
 
246
 
    // the_focus_controller() is an adapter for the_session_coordinator().
247
 
    // To customize this behaviour it is recommended you override wrap_session_coordinator().
 
247
    // the_focus_controller() is an interface for the_shell().
248
248
    std::shared_ptr<shell::FocusController> the_focus_controller();
249
249
 
250
250
    /** @name shell configuration - customization
251
251
     * configurable interfaces for modifying shell
252
252
     *  @{ */
253
 
    virtual std::shared_ptr<shell::FocusSetter>         the_shell_focus_setter();
 
253
    virtual auto the_shell() -> std::shared_ptr<shell::Shell>;
254
254
    virtual std::shared_ptr<scene::PlacementStrategy>   the_placement_strategy();
255
255
    virtual std::shared_ptr<scene::SessionListener>     the_session_listener();
256
256
    virtual std::shared_ptr<shell::DisplayLayout>       the_shell_display_layout();
285
285
    /** @name scene configuration - services
286
286
     * services provided by scene for the rest of Mir
287
287
     *  @{ */
288
 
    // To customize this behaviour it is recommended you override wrap_session_coordinator().
289
288
    virtual std::shared_ptr<scene::SessionCoordinator>  the_session_coordinator();
290
289
    virtual std::shared_ptr<scene::CoordinateTranslator> the_coordinate_translator();
291
290
    /** @} */
317
316
 
318
317
    virtual std::shared_ptr<time::Clock> the_clock();
319
318
    virtual std::shared_ptr<ServerActionQueue> the_server_action_queue();
 
319
    virtual std::shared_ptr<SharedLibraryProberReport>  the_shared_library_prober_report();
320
320
 
321
321
protected:
322
322
    std::shared_ptr<options::Option> the_options() const;
342
342
    virtual std::shared_ptr<graphics::DisplayConfigurationPolicy> wrap_display_configuration_policy(
343
343
        std::shared_ptr<graphics::DisplayConfigurationPolicy> const& wrapped);
344
344
 
345
 
    virtual std::shared_ptr<scene::SurfaceCoordinator>  wrap_surface_coordinator(
346
 
        std::shared_ptr<scene::SurfaceCoordinator> const& wrapped);
347
 
 
348
 
    virtual std::shared_ptr<scene::SessionCoordinator>  wrap_session_coordinator(
349
 
        std::shared_ptr<scene::SessionCoordinator> const& wrapped);
 
345
    virtual std::shared_ptr<shell::Shell>  wrap_shell(
 
346
        std::shared_ptr<shell::Shell> const& wrapped);
350
347
 
351
348
    virtual std::shared_ptr<input::CursorListener>  wrap_cursor_listener(
352
349
        std::shared_ptr<input::CursorListener> const& wrapped);
377
374
    CachedPtr<input::CursorListener> cursor_listener;
378
375
    CachedPtr<input::TouchVisualizer> touch_visualizer;
379
376
    CachedPtr<graphics::Platform>     graphics_platform;
380
 
    CachedPtr<graphics::NativePlatform>    graphics_native_platform;
381
377
    CachedPtr<graphics::GraphicBufferAllocator> buffer_allocator;
382
 
    CachedPtr<graphics::BufferWriter> buffer_writer;
383
378
    CachedPtr<graphics::Display>      display;
384
379
    CachedPtr<graphics::Cursor>       cursor;
385
380
    CachedPtr<graphics::CursorImage>  default_cursor_image;
402
397
    CachedPtr<scene::SurfaceFactory> surface_factory;
403
398
    CachedPtr<scene::SessionContainer>  session_container;
404
399
    CachedPtr<scene::SurfaceCoordinator> surface_coordinator;
405
 
    CachedPtr<shell::FocusSetter>       shell_focus_setter;
406
 
    CachedPtr<scene::PlacementStrategy> shell_placement_strategy;
 
400
    CachedPtr<scene::PlacementStrategy> placement_strategy;
407
401
    CachedPtr<scene::SessionListener> session_listener;
408
402
    CachedPtr<scene::PixelBuffer>       pixel_buffer;
409
403
    CachedPtr<scene::SnapshotStrategy>  snapshot_strategy;
428
422
    CachedPtr<scene::CoordinateTranslator> coordinate_translator;
429
423
    CachedPtr<EmergencyCleanup> emergency_cleanup;
430
424
    CachedPtr<shell::HostLifecycleEventListener> host_lifecycle_event_listener;
 
425
    CachedPtr<SharedLibraryProberReport> shared_library_prober_report;
 
426
    CachedPtr<shell::Shell> shell;
431
427
 
432
428
private:
433
429
    std::shared_ptr<options::Configuration> const configuration_options;
442
438
    std::shared_ptr<scene::BroadcastingSessionEventSink> the_broadcasting_session_event_sink();
443
439
 
444
440
    auto report_factory(char const* report_opt) -> std::unique_ptr<report::ReportFactory>;
 
441
 
 
442
    CachedPtr<shell::detail::FrontendShell> frontend_shell;
445
443
};
446
444
}
447
445