summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinNoGUI/PlatformHeadless.cpp
diff options
context:
space:
mode:
authorStenzek <stenzek@gmail.com>2018-10-24 15:50:54 +1000
committerStenzek <stenzek@gmail.com>2019-02-15 18:40:46 +1000
commit836f76da898ee514022d7b2c84a88f6dcc1a4c0b (patch)
tree5a11cf6f3cc91a7d533c89eb24a6ee709397f87a /Source/Core/DolphinNoGUI/PlatformHeadless.cpp
parentf9869cb2163b0e3644dae4c7b592cdc5b516608b (diff)
DolphinNoGUI: Runtime selection of platform
Diffstat (limited to 'Source/Core/DolphinNoGUI/PlatformHeadless.cpp')
-rw-r--r--Source/Core/DolphinNoGUI/PlatformHeadless.cpp50
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>();
+}