summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/render.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/render.cpp')
-rw-r--r--src/emu/render.cpp49
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;