summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinNoGUI/PlatformHeadless.cpp
diff options
context:
space:
mode:
authorConnor McLaughlin <stenzek@gmail.com>2019-02-16 14:15:00 +1000
committerGitHub <noreply@github.com>2019-02-16 14:15:00 +1000
commitb5c3881fe703287c4f883ca42a3b931bb6594854 (patch)
tree29daf45582fa2860c76127271457675184341900 /Source/Core/DolphinNoGUI/PlatformHeadless.cpp
parentc41f32bcf8fe0c04d54d3541df210a604b2399d1 (diff)
parenteabde77892faf4408481f685f2fbf1b348232d5f (diff)
Merge pull request #7512 from stenzek/runtime-headless
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>();
+}