diff options
author | 2016-04-09 15:19:06 +0200 | |
---|---|---|
committer | 2016-04-09 15:19:43 +0200 | |
commit | a14994c6c01f04227ccc7f0824da8de942b72b69 (patch) | |
tree | fc8ceb45db724b84fc92feee8e774e0a525e69b9 | |
parent | 2f974586d644d6e8b9469ed4c2bf6fa432924f22 (diff) |
Added skeleton for network output (nw)
-rw-r--r-- | scripts/src/osd/modules.lua | 4 | ||||
-rw-r--r-- | scripts/src/osd/osdmini.lua | 1 | ||||
-rw-r--r-- | src/osd/modules/lib/osdobj_common.cpp | 1 | ||||
-rw-r--r-- | src/osd/modules/output/network.cpp | 59 |
4 files changed, 65 insertions, 0 deletions
diff --git a/scripts/src/osd/modules.lua b/scripts/src/osd/modules.lua index 4137d50c802..9c85a9cc998 100644 --- a/scripts/src/osd/modules.lua +++ b/scripts/src/osd/modules.lua @@ -90,6 +90,10 @@ function osdmodulesbuild() MAME_DIR .. "src/osd/modules/output/output_module.h", MAME_DIR .. "src/osd/modules/output/none.cpp", MAME_DIR .. "src/osd/modules/output/console.cpp", + MAME_DIR .. "src/osd/modules/output/network.cpp", + } + includedirs { + ext_includedir("uv"), } if _OPTIONS["targetos"]=="windows" then diff --git a/scripts/src/osd/osdmini.lua b/scripts/src/osd/osdmini.lua index 57a984005fc..efdb28bd9c0 100644 --- a/scripts/src/osd/osdmini.lua +++ b/scripts/src/osd/osdmini.lua @@ -96,6 +96,7 @@ project ("osd_" .. _OPTIONS["osd"]) MAME_DIR .. "src/osd/modules/output/output_module.h", MAME_DIR .. "src/osd/modules/output/none.cpp", MAME_DIR .. "src/osd/modules/output/console.cpp", + MAME_DIR .. "src/osd/modules/output/network.cpp", } project ("ocore_" .. _OPTIONS["osd"]) diff --git a/src/osd/modules/lib/osdobj_common.cpp b/src/osd/modules/lib/osdobj_common.cpp index 016ca3a7800..6c4fe3a3192 100644 --- a/src/osd/modules/lib/osdobj_common.cpp +++ b/src/osd/modules/lib/osdobj_common.cpp @@ -252,6 +252,7 @@ void osd_common_t::register_options() REGISTER_MODULE(m_mod_man, OUTPUT_NONE); REGISTER_MODULE(m_mod_man, OUTPUT_CONSOLE); + REGISTER_MODULE(m_mod_man, OUTPUT_NETWORK); // after initialization we know which modules are supported diff --git a/src/osd/modules/output/network.cpp b/src/osd/modules/output/network.cpp new file mode 100644 index 00000000000..13504054d85 --- /dev/null +++ b/src/osd/modules/output/network.cpp @@ -0,0 +1,59 @@ +// license:BSD-3-Clause +// copyright-holders:Miodrag Milanovic +/*************************************************************************** + + network.cpp + + Network output interface. + +*******************************************************************c********/ + +#include "output_module.h" +#include "modules/osdmodule.h" +#include <uv.h> + +#include <mutex> +#include <thread> + +class output_network : public osd_module, public output_module +{ +public: + output_network() + : osd_module(OSD_OUTPUT_PROVIDER, "network"), output_module(), m_loop(nullptr) + { + } + virtual ~output_network() { + } + + virtual int init(const osd_options &options) override { + m_loop = new uv_loop_t; + int err = uv_loop_init(m_loop); + if (err) { + return 1; + } + + m_working_thread = std::thread([](output_network* self) { self->process_output(); }, this); + return 0; + } + virtual void exit() override { + m_working_thread.join(); + uv_loop_close(m_loop); + delete m_loop; + } + + // output_module + + virtual void notify(const char *outname, INT32 value) override { } + + // implementation + void process_output() + { + uv_run(m_loop, UV_RUN_DEFAULT); + } + +private: + std::thread m_working_thread; + uv_loop_t* m_loop; +}; + +MODULE_DEFINITION(OUTPUT_NETWORK, output_network) |