Only use multi window manager when platform supports
This commit is contained in:
parent
0d45f800a0
commit
c2e5bec26d
6 changed files with 16 additions and 3 deletions
|
|
@ -186,10 +186,10 @@ anbox::cmds::SessionManager::SessionManager(const BusFactory &bus_factory)
|
|||
auto app_db = std::make_shared<application::Database>();
|
||||
|
||||
std::shared_ptr<wm::Manager> window_manager;
|
||||
if (single_window_)
|
||||
window_manager = std::make_shared<wm::SingleWindowManager>(platform, display_frame, app_db);
|
||||
else
|
||||
if (platform->supports_multi_window() && !single_window_)
|
||||
window_manager = std::make_shared<wm::MultiWindowManager>(platform, android_api_stub, app_db);
|
||||
else
|
||||
window_manager = std::make_shared<wm::SingleWindowManager>(platform, display_frame, app_db);
|
||||
|
||||
auto gl_server = std::make_shared<graphics::GLRendererServer>(
|
||||
graphics::GLRendererServer::Config{gles_driver_, single_window_}, window_manager);
|
||||
|
|
|
|||
|
|
@ -56,6 +56,8 @@ class BasePlatform {
|
|||
|
||||
virtual void set_renderer(const std::shared_ptr<Renderer> &renderer) = 0;
|
||||
virtual void set_window_manager(const std::shared_ptr<wm::Manager> &window_manager) = 0;
|
||||
|
||||
virtual bool supports_multi_window() const = 0;
|
||||
};
|
||||
std::shared_ptr<BasePlatform> create(const std::string &name = "",
|
||||
const std::shared_ptr<input::Manager> &input_manager = nullptr,
|
||||
|
|
|
|||
|
|
@ -67,5 +67,9 @@ void NullPlatform::set_window_manager(const std::shared_ptr<wm::Manager> &window
|
|||
(void) window_manager;
|
||||
ERROR("Not implemented");
|
||||
}
|
||||
|
||||
bool NullPlatform::supports_multi_window() const {
|
||||
return false;
|
||||
}
|
||||
} // namespace wm
|
||||
} // namespace anbox
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ class NullPlatform : public BasePlatform {
|
|||
std::shared_ptr<audio::Source> create_audio_source() override;
|
||||
void set_renderer(const std::shared_ptr<Renderer> &renderer) override;
|
||||
void set_window_manager(const std::shared_ptr<wm::Manager> &window_manager) override;
|
||||
bool supports_multi_window() const override;
|
||||
};
|
||||
} // namespace wm
|
||||
} // namespace anbox
|
||||
|
|
|
|||
|
|
@ -312,6 +312,10 @@ std::shared_ptr<audio::Source> Platform::create_audio_source() {
|
|||
ERROR("Not implemented");
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool Platform::supports_multi_window() const {
|
||||
return true;
|
||||
}
|
||||
} // namespace sdl
|
||||
} // namespace platform
|
||||
} // namespace anbox
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ class Platform : public std::enable_shared_from_this<Platform>,
|
|||
std::shared_ptr<audio::Sink> create_audio_sink() override;
|
||||
std::shared_ptr<audio::Source> create_audio_source() override;
|
||||
|
||||
bool supports_multi_window() const override;
|
||||
|
||||
private:
|
||||
void process_events();
|
||||
void process_input_event(const SDL_Event &event);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue