diff options
| author | Stenzek <stenzek@gmail.com> | 2018-10-24 15:50:54 +1000 |
|---|---|---|
| committer | Stenzek <stenzek@gmail.com> | 2019-02-15 18:40:46 +1000 |
| commit | 836f76da898ee514022d7b2c84a88f6dcc1a4c0b (patch) | |
| tree | 5a11cf6f3cc91a7d533c89eb24a6ee709397f87a /Source/Core/DolphinNoGUI/PlatformHeadless.cpp | |
| parent | f9869cb2163b0e3644dae4c7b592cdc5b516608b (diff) | |
DolphinNoGUI: Runtime selection of platform
Diffstat (limited to 'Source/Core/DolphinNoGUI/PlatformHeadless.cpp')
| -rw-r--r-- | Source/Core/DolphinNoGUI/PlatformHeadless.cpp | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Source/Core/DolphinNoGUI/PlatformHeadless.cpp b/Source/Core/DolphinNoGUI/PlatformHeadless.cpp new file mode 100644 index 0000000000..b848492152 --- /dev/null +++ b/Source/Core/DolphinNoGUI/PlatformHeadless.cpp @@ -0,0 +1,50 @@ +// Copyright 2018 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include <cstdio> +#include <thread> +#include "Core/Core.h" +#include "DolphinNoGUI/Platform.h" + +namespace +{ +class PlatformHeadless : public Platform +{ +public: + void SetTitle(const std::string& title) override; + void MainLoop() override; + + WindowSystemInfo GetWindowSystemInfo() const override; +}; + +void PlatformHeadless::SetTitle(const std::string& title) +{ + std::fprintf(stdout, "%s\n", title.c_str()); +} + +void PlatformHeadless::MainLoop() +{ + while (m_running.IsSet()) + { + UpdateRunningFlag(); + Core::HostDispatchJobs(); + std::this_thread::sleep_for(std::chrono::milliseconds(100)); + } +} + +WindowSystemInfo PlatformHeadless::GetWindowSystemInfo() const +{ + WindowSystemInfo wsi; + wsi.type = WindowSystemType::Headless; + wsi.display_connection = nullptr; + wsi.render_surface = nullptr; + return wsi; +} + +} // namespace + +std::unique_ptr<Platform> Platform::CreateHeadlessPlatform() +{ + return std::make_unique<PlatformHeadless>(); +} |
