summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinNoGUI/PlatformHeadless.cpp
diff options
context:
space:
mode:
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>();
+}