2
* Copyright © 2012 Canonical Ltd.
4
* This program is free software: you can redistribute it and/or modify it
5
* under the terms of the GNU Lesser General Public License version 3,
6
* as published by the Free Software Foundation.
8
* This program is distributed in the hope that it will be useful,
9
* but WITHOUT ANY WARRANTY; without even the implied warranty of
10
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
* GNU Lesser General Public License for more details.
13
* You should have received a copy of the GNU Lesser General Public License
14
* along with this program. If not, see <http://www.gnu.org/licenses/>.
16
* Authored by: Kevin DuBois <kevin.dubois@canonical.com>
19
#ifndef MIR_GRAPHICS_ANDROID_DISPLAY_H_
20
#define MIR_GRAPHICS_ANDROID_DISPLAY_H_
22
#include "mir/graphics/display.h"
23
#include "gl_context.h"
35
class GLProgramFactory;
40
class DisplaySupportProvider;
41
class ConfigurableDisplayBuffer;
43
class Display : public graphics::Display
46
explicit Display(std::shared_ptr<DisplayBuilder> const& display_builder,
47
std::shared_ptr<GLProgramFactory> const& gl_program_factory,
48
std::shared_ptr<GLConfig> const& gl_config,
49
std::shared_ptr<DisplayReport> const& display_report);
51
void for_each_display_buffer(std::function<void(graphics::DisplayBuffer&)> const& f);
53
std::unique_ptr<graphics::DisplayConfiguration> configuration() const override;
54
void configure(graphics::DisplayConfiguration const&) override;
56
void register_configuration_change_handler(
57
EventHandlerRegister& handlers,
58
DisplayConfigurationChangeHandler const& conf_change_handler);
60
void register_pause_resume_handlers(
61
EventHandlerRegister& handlers,
62
DisplayPauseHandler const& pause_handler,
63
DisplayResumeHandler const& resume_handler);
68
std::shared_ptr<Cursor> create_hardware_cursor(std::shared_ptr<CursorImage> const& initial_image);
69
std::unique_ptr<graphics::GLContext> create_gl_context();
72
std::shared_ptr<DisplayBuilder> const display_builder;
73
PbufferGLContext gl_context;
74
mutable std::mutex configuration_mutex;
76
//we only have a primary display at the moment
77
std::unique_ptr<ConfigurableDisplayBuffer> const display_buffer;
83
#endif /* MIR_GRAPHICS_ANDROID_DISPLAY_H_ */