static void handle_result_show_graphics(char* buf, MIOFILE& fout) { string result_name; GRAPHICS_MSG gm; ACTIVE_TASK* atp; if (match_tag(buf, "<full_screen/>")) { gm.mode = MODE_FULLSCREEN; } else if (match_tag(buf, "<hide/>")) { gm.mode = MODE_HIDE_GRAPHICS; } else { gm.mode = MODE_WINDOW; } parse_str(buf, "<window_station>", gm.window_station, sizeof(gm.window_station)); parse_str(buf, "<desktop>", gm.desktop, sizeof(gm.desktop)); parse_str(buf, "<display>", gm.display, sizeof(gm.display)); if (parse_str(buf, "<result_name>", result_name)) { PROJECT* p = get_project(buf, fout); if (!p) { fout.printf("<error>No such project</error>\n"); return; } RESULT* rp = gstate.lookup_result(p, result_name.c_str()); if (!rp) { fout.printf("<error>No such result</error>\n"); return; } atp = gstate.lookup_active_task_by_result(rp); if (!atp) { fout.printf("<error>no such result</error>\n"); return; } atp->request_graphics_mode(gm); } else { for (unsigned int i=0; i<gstate.active_tasks.active_tasks.size(); i++) { atp = gstate.active_tasks.active_tasks[i]; if (atp->scheduler_state != CPU_SCHED_SCHEDULED) continue; atp->request_graphics_mode(gm); } } fout.printf("<success/>\n"); }