From 71e5f10d78d6ea2d97a0dafc18fe852aa8bfb910 Mon Sep 17 00:00:00 2001 From: Miodrag Milanovic Date: Fri, 16 Aug 2013 14:44:21 +0000 Subject: [PATCH] preps for slider work (nw) --- src/emu/machine.c | 3 ++ src/emu/ui.c | 13 +++++-- src/emu/ui.h | 3 ++ src/emu/webengine.c | 92 +++++++++++++++++++++++++++++++++------------ src/emu/webengine.h | 8 +++- 5 files changed, 92 insertions(+), 27 deletions(-) diff --git a/src/emu/machine.c b/src/emu/machine.c index f65abd4adec..ed8f40a31ef 100644 --- a/src/emu/machine.c +++ b/src/emu/machine.c @@ -394,6 +394,9 @@ int running_machine::run(bool firstrun) bool settingsloaded = config_load_settings(*this); nvram_load(*this); sound().ui_mute(false); + + // initialize ui lists + ui_initialize(*this); // display the startup screens ui_display_startup_screens(*this, firstrun, !settingsloaded); diff --git a/src/emu/ui.c b/src/emu/ui.c index 046ed0b8fe6..201163912c3 100644 --- a/src/emu/ui.c +++ b/src/emu/ui.c @@ -304,6 +304,16 @@ static void ui_exit(running_machine &machine) } +/*------------------------------------------------- + ui_initialize - initialize ui lists +-------------------------------------------------*/ + +void ui_initialize(running_machine &machine) +{ + /* initialize the on-screen display system */ + slider_list = slider_current = slider_init(machine); +} + /*------------------------------------------------- ui_display_startup_screens - display the various startup screens @@ -322,9 +332,6 @@ int ui_display_startup_screens(running_machine &machine, int first_time, int sho if (!first_time || (str > 0 && str < 60*5) || &machine.system() == &GAME_NAME(___empty) || (machine.debug_flags & DEBUG_FLAG_ENABLED) != 0) show_gameinfo = show_warnings = show_disclaimer = FALSE; - /* initialize the on-screen display system */ - slider_list = slider_current = slider_init(machine); - /* loop over states */ ui_set_handler(handler_ingame, 0); for (state = 0; state < maxstate && !machine.scheduled_event_pending() && !ui_menu::stack_has_special_main_menu(); state++) diff --git a/src/emu/ui.h b/src/emu/ui.h index e31f0072420..69172854a10 100644 --- a/src/emu/ui.h +++ b/src/emu/ui.h @@ -122,6 +122,9 @@ struct slider_state /* main init/exit routines */ int ui_init(running_machine &machine); +/* initialize ui lists */ +void ui_initialize(running_machine &machine); + /* display the startup screens */ int ui_display_startup_screens(running_machine &machine, int first_time, int show_disclaimer); diff --git a/src/emu/webengine.c b/src/emu/webengine.c index 356bc906a0e..9fc01630ee1 100644 --- a/src/emu/webengine.c +++ b/src/emu/webengine.c @@ -39,6 +39,7 @@ #include "emu.h" #include "emuopts.h" +#include "ui.h" #include "webengine.h" #include "web/mongoose.h" #include "web/json/json.h" @@ -75,6 +76,69 @@ static void get_qsvar(const struct mg_request_info *request_info, mg_get_var(qs, strlen(qs == NULL ? "" : qs), name, dst, dst_len); } +int web_engine::json_game_handler(struct mg_connection *conn) +{ + Json::Value data; + data["name"] = m_machine->system().name; + data["description"] = m_machine->system().description; + data["year"] = m_machine->system().year; + data["manufacturer"] = m_machine->system().manufacturer; + data["parent"] = m_machine->system().parent; + data["source_file"] = m_machine->system().source_file; + data["flags"] = m_machine->system().flags; + + Json::FastWriter writer; + const char *json = writer.write(data).c_str(); + // Send HTTP reply to the client + mg_printf(conn, + "HTTP/1.1 200 OK\r\n" + "Content-Type: application/json\r\n" + "Content-Length: %d\r\n" // Always set Content-Length + "\r\n" + "%s", + (int)strlen(json), json); + + // Returning non-zero tells mongoose that our function has replied to + // the client, and mongoose should not send client any more data. + return 1; +} + +int web_engine::json_slider_handler(struct mg_connection *conn) +{ + const slider_state *curslider; + astring tempstring; + + /* add all sliders */ + for (curslider = ui_get_slider_list(); curslider != NULL; curslider = curslider->next) + { + INT32 curval = (*curslider->update)(machine(), curslider->arg, &tempstring, SLIDER_NOCHANGE); + printf("%d\n",curval); +/* UINT32 flags = 0; + if (curval > curslider->minval) + flags |= MENU_FLAG_LEFT_ARROW; + if (curval < curslider->maxval) + flags |= MENU_FLAG_RIGHT_ARROW; + item_append(curslider->description, tempstring, flags, (void *)curslider); + + if (menuless_mode) + break;*/ + } + + /* add all sliders */ + for (curslider = (slider_state*)machine().osd().get_slider_list(); curslider != NULL; curslider = curslider->next) + { + INT32 curval = (*curslider->update)(machine(), curslider->arg, &tempstring, SLIDER_NOCHANGE); + printf("%d\n",curval); + /*UINT32 flags = 0; + if (curval > curslider->minval) + flags |= MENU_FLAG_LEFT_ARROW; + if (curval < curslider->maxval) + flags |= MENU_FLAG_RIGHT_ARROW; + item_append(curslider->description, tempstring, flags, (void *)curslider);*/ + } + return 1; +} + // This function will be called by mongoose on every new request. int web_engine::begin_request_handler(struct mg_connection *conn) { @@ -83,29 +147,11 @@ int web_engine::begin_request_handler(struct mg_connection *conn) { if (!strcmp(request_info->uri, "/json/game")) { - Json::Value data; - data["name"] = m_machine->system().name; - data["description"] = m_machine->system().description; - data["year"] = m_machine->system().year; - data["manufacturer"] = m_machine->system().manufacturer; - data["parent"] = m_machine->system().parent; - data["source_file"] = m_machine->system().source_file; - data["flags"] = m_machine->system().flags; - - Json::FastWriter writer; - const char *json = writer.write(data).c_str(); - // Send HTTP reply to the client - mg_printf(conn, - "HTTP/1.1 200 OK\r\n" - "Content-Type: application/json\r\n" - "Content-Length: %d\r\n" // Always set Content-Length - "\r\n" - "%s", - (int)strlen(json), json); - - // Returning non-zero tells mongoose that our function has replied to - // the client, and mongoose should not send client any more data. - return 1; + return json_game_handler(conn); + } + if (!strcmp(request_info->uri, "/json/slider")) + { + return json_slider_handler(conn); } } else if (!strncmp(request_info->uri, "/cmd",4)) diff --git a/src/emu/webengine.h b/src/emu/webengine.h index 9ab53aa65a6..1d54646a373 100644 --- a/src/emu/webengine.h +++ b/src/emu/webengine.h @@ -60,7 +60,13 @@ public: void websocket_ready_handler(struct mg_connection *conn); int websocket_data_handler(struct mg_connection *conn, int flags, char *data, size_t data_len); int begin_request_handler(struct mg_connection *conn); - void *websocket_keepalive(); + void *websocket_keepalive(); +protected: + // getters + running_machine &machine() const { return *m_machine; } + + int json_game_handler(struct mg_connection *conn); + int json_slider_handler(struct mg_connection *conn); private: // internal state emu_options & m_options;