Previous 199869 Revisions Next

r31986 Monday 8th September, 2014 at 07:51:14 UTC by Miodrag Milanović
Do web serving in main thread (nw)
[src/emu]machine.c webengine.c webengine.h
[src/emu/debug]debugcpu.c
[src/emu/ui]ui.c

trunk/src/emu/machine.c
r31985r31986
372372         js_set_main_loop(this);
373373         #endif
374374
375         manager().web()->serve();
376         
375377         // execute CPUs if not paused
376378         if (!m_paused)
377379            m_scheduler.timeslice();
trunk/src/emu/debug/debugcpu.c
r31985r31986
19311931         // flush any pending updates before waiting again
19321932         machine.debug_view().flush_osd_updates();
19331933
1934         machine.manager().web()->serve();
1935         
19341936         // clear the memory modified flag and wait
19351937         global->memory_modified = false;
19361938         if (machine.debug_flags & DEBUG_FLAG_OSD_ENABLED)
trunk/src/emu/webengine.c
r31985r31986
287287   }
288288}
289289
290static int iterate_callback(struct mg_connection *c, enum mg_event ev) {
291   if (ev == MG_POLL && c->is_websocket) {
292   char buf[20];
293   int len = snprintf(buf, sizeof(buf), "%lu",
294      (unsigned long) * (time_t *) c->callback_param);
295   mg_websocket_write(c, 1, buf, len);
296   }
297   return MG_TRUE;
298}
299
300static void *serve(void *server) {
301   time_t current_timer = 0, last_timer = time(NULL);
302   for (;;) mg_poll_server((struct mg_server *) server, 1000);
303   current_timer = time(NULL);
304   if (current_timer - last_timer > 0) {
305      last_timer = current_timer;
306      mg_iterate_over_connections((struct mg_server *)server, iterate_callback, &current_timer);
307   }
308   return NULL;
309}
310
311290//-------------------------------------------------
312291//  web_engine - constructor
313292//-------------------------------------------------
r31985r31986
325304
326305      mg_set_option(m_server, "listening_port", options.http_port());
327306      mg_set_option(m_server, "document_root",  options.http_path());
328
329      mg_start_thread(serve, m_server);
330307   }
331308
332309}
r31985r31986
352329   mg_destroy_server(&m_server);
353330}
354331
332void web_engine::serve()
333{
334   if (m_options.http()) mg_poll_server(m_server, 0);
335}
336
355337static int websocket_callback(struct mg_connection *c, enum mg_event ev) {
356338   if (c->is_websocket) {
357339   const char *message = (const char *)c->callback_param;
trunk/src/emu/webengine.h
r31985r31986
2323   web_engine(emu_options &options);
2424   ~web_engine();
2525
26   void serve();
2627   void push_message(const char *message);
2728   void close();
2829
trunk/src/emu/ui/ui.c
r31985r31986
360360
361361      // loop while we have a handler
362362      while (m_handler_callback != handler_ingame && !machine().scheduled_event_pending() && !ui_menu::stack_has_special_main_menu())
363      {
364         machine().manager().web()->serve();
363365         machine().video().frame_update();
366      }
364367
365368      // clear the handler and force an update
366369      set_handler(handler_ingame, 0);

Previous 199869 Revisions Next


© 1997-2024 The MAME Team