diff options
Diffstat (limited to 'src/emu/machine.cpp')
-rw-r--r-- | src/emu/machine.cpp | 46 |
1 files changed, 24 insertions, 22 deletions
diff --git a/src/emu/machine.cpp b/src/emu/machine.cpp index 36e107e838d..68b4b170b6c 100644 --- a/src/emu/machine.cpp +++ b/src/emu/machine.cpp @@ -344,8 +344,6 @@ int running_machine::run(bool quiet) export_http_api(); - m_manager.http()->update(); - // run the CPUs until a reset or exit m_hard_reset_pending = false; while ((!m_hard_reset_pending && !m_exit_pending) || m_saveload_schedule != saveload_schedule::NONE) @@ -1193,26 +1191,30 @@ running_machine::logerror_callback_item::logerror_callback_item(logerror_callbac void running_machine::export_http_api() { - m_manager.http()->add("/api/machine", [this](std::string) - { - rapidjson::StringBuffer s; - rapidjson::Writer<rapidjson::StringBuffer> writer(s); - writer.StartObject(); - writer.Key("name"); - writer.String(m_basename.c_str()); - - writer.Key("devices"); - writer.StartArray(); - - device_iterator iter(this->root_device()); - for (device_t &device : iter) - writer.String(device.tag()); - - writer.EndArray(); - writer.EndObject(); - - return std::make_tuple(std::string(s.GetString()), 200, "application/json"); - }); + if (m_manager.http()->is_active()) { + m_manager.http()->add_http_handler("/api/machine", [this](http_manager::http_request_ptr request, http_manager::http_response_ptr response) + { + rapidjson::StringBuffer s; + rapidjson::Writer<rapidjson::StringBuffer> writer(s); + writer.StartObject(); + writer.Key("name"); + writer.String(m_basename.c_str()); + + writer.Key("devices"); + writer.StartArray(); + + device_iterator iter(this->root_device()); + for (device_t &device : iter) + writer.String(device.tag()); + + writer.EndArray(); + writer.EndObject(); + + response->set_status(200); + response->set_content_type("application/json"); + response->set_body(s.GetString()); + }); + } } //************************************************************************** |