Merge pull request #339 from morphis/f/only-multi-window-if-supported
Only use multi window manager when platform supports
This commit is contained in:
commit
fa81d487ca
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>();
|
auto app_db = std::make_shared<application::Database>();
|
||||||
|
|
||||||
std::shared_ptr<wm::Manager> window_manager;
|
std::shared_ptr<wm::Manager> window_manager;
|
||||||
if (single_window_)
|
if (platform->supports_multi_window() && !single_window_)
|
||||||
window_manager = std::make_shared<wm::SingleWindowManager>(platform, display_frame, app_db);
|
|
||||||
else
|
|
||||||
window_manager = std::make_shared<wm::MultiWindowManager>(platform, android_api_stub, app_db);
|
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>(
|
auto gl_server = std::make_shared<graphics::GLRendererServer>(
|
||||||
graphics::GLRendererServer::Config{gles_driver_, single_window_}, window_manager);
|
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_renderer(const std::shared_ptr<Renderer> &renderer) = 0;
|
||||||
virtual void set_window_manager(const std::shared_ptr<wm::Manager> &window_manager) = 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 = "",
|
std::shared_ptr<BasePlatform> create(const std::string &name = "",
|
||||||
const std::shared_ptr<input::Manager> &input_manager = nullptr,
|
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;
|
(void) window_manager;
|
||||||
ERROR("Not implemented");
|
ERROR("Not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NullPlatform::supports_multi_window() const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
} // namespace wm
|
} // namespace wm
|
||||||
} // namespace anbox
|
} // namespace anbox
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ class NullPlatform : public BasePlatform {
|
||||||
std::shared_ptr<audio::Source> create_audio_source() override;
|
std::shared_ptr<audio::Source> create_audio_source() override;
|
||||||
void set_renderer(const std::shared_ptr<Renderer> &renderer) override;
|
void set_renderer(const std::shared_ptr<Renderer> &renderer) override;
|
||||||
void set_window_manager(const std::shared_ptr<wm::Manager> &window_manager) override;
|
void set_window_manager(const std::shared_ptr<wm::Manager> &window_manager) override;
|
||||||
|
bool supports_multi_window() const override;
|
||||||
};
|
};
|
||||||
} // namespace wm
|
} // namespace wm
|
||||||
} // namespace anbox
|
} // namespace anbox
|
||||||
|
|
|
||||||
|
|
@ -312,6 +312,10 @@ std::shared_ptr<audio::Source> Platform::create_audio_source() {
|
||||||
ERROR("Not implemented");
|
ERROR("Not implemented");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Platform::supports_multi_window() const {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
} // namespace sdl
|
} // namespace sdl
|
||||||
} // namespace platform
|
} // namespace platform
|
||||||
} // namespace anbox
|
} // 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::Sink> create_audio_sink() override;
|
||||||
std::shared_ptr<audio::Source> create_audio_source() override;
|
std::shared_ptr<audio::Source> create_audio_source() override;
|
||||||
|
|
||||||
|
bool supports_multi_window() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void process_events();
|
void process_events();
|
||||||
void process_input_event(const SDL_Event &event);
|
void process_input_event(const SDL_Event &event);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue