diff options
Diffstat (limited to 'src/emu/render.cpp')
-rw-r--r-- | src/emu/render.cpp | 49 |
1 files changed, 21 insertions, 28 deletions
diff --git a/src/emu/render.cpp b/src/emu/render.cpp index 4d621508a20..3bc0e8ef5db 100644 --- a/src/emu/render.cpp +++ b/src/emu/render.cpp @@ -1067,7 +1067,7 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i if (strcmp(viewname, "auto") != 0) { // scan for a matching view name - size_t viewlen = strlen(viewname); + size_t const viewlen = strlen(viewname); for (unsigned i = 0; !view && (m_views.size() > i); ++i) if (!core_strnicmp(m_views[i].first.get().name().c_str(), viewname, viewlen)) view = &m_views[i].first.get(); @@ -1082,21 +1082,22 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i // if we have enough targets to be one per screen, assign in order if (numtargets >= screens.size()) { - int const ourindex = index() % screens.size(); - screen_device &screen = screens[ourindex]; - // find the first view with this screen and this screen only - unsigned viewindex; - for (view = view_by_index(viewindex = 0); view != nullptr; view = view_by_index(++viewindex)) + screen_device const &screen = screens[index() % screens.size()]; + for (unsigned i = 0; !view && (m_views.size() > i); ++i) { - auto const &viewscreens = view->screens(); - if (viewscreens.empty()) + for (screen_device const &viewscreen : m_views[i].first.get().screens()) { - view = nullptr; - break; + if (&viewscreen == &screen) + { + view = &m_views[i].first.get(); + } + else + { + view = nullptr; + break; + } } - else if (std::find_if(viewscreens.begin(), viewscreens.end(), [&screen] (auto const &scr) { return &scr.get() != &screen; }) == viewscreens.end()) - break; } } @@ -1105,18 +1106,10 @@ unsigned render_target::configured_view(const char *viewname, int targetindex, i { for (unsigned i = 0; !view && (m_views.size() > i); ++i) { - view = &m_views[i].first.get(); - if (view->screen_count() >= screens.size()) - { - for (screen_device &screen : screens) - { - if (!view->has_screen(screen)) - { - view = nullptr; - break; - } - } - } + layout_view &curview = m_views[i].first; + if (curview.screen_count() >= screens.size()) + if (std::find_if(screens.begin(), screens.end(), [&curview] (screen_device &screen) { return !curview.has_screen(screen); }) == screens.end()) + view = &curview; } } } @@ -2631,7 +2624,7 @@ void render_target::config_load(util::xml::data_node const &targetnode) if (m_views.end() == view) continue; - for (util::xml::data_node const *vistogglenode = viewnode->get_child("vistoggle"); vistogglenode; vistogglenode = vistogglenode->get_next_sibling("vistoggle")) + for (util::xml::data_node const *vistogglenode = viewnode->get_child("collection"); vistogglenode; vistogglenode = vistogglenode->get_next_sibling("collection")) { char const *const vistogglename = vistogglenode->get_attribute_string("name", nullptr); if (!vistogglename) @@ -2642,7 +2635,7 @@ void render_target::config_load(util::xml::data_node const &targetnode) if (vistoggles.end() == vistoggle) continue; - int const enable = vistogglenode->get_attribute_int("enabled", -1); + int const enable = vistogglenode->get_attribute_int("visible", -1); if (0 <= enable) { if (enable) @@ -2716,9 +2709,9 @@ bool render_target::config_save(util::xml::data_node &targetnode) viewnode = targetnode.add_child("view", nullptr); viewnode->set_attribute("name", view.first.get().name().c_str()); } - util::xml::data_node *const vistogglenode = viewnode->add_child("vistoggle", nullptr); + util::xml::data_node *const vistogglenode = viewnode->add_child("collection", nullptr); vistogglenode->set_attribute("name", toggle.name().c_str()); - vistogglenode->set_attribute_int("enabled", BIT(view.second, i)); + vistogglenode->set_attribute_int("visible", BIT(view.second, i)); changed = true; } ++i; |