summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2020-09-09 14:36:52 +1000
committer Vas Crabb <vas@vastheman.com>2020-09-09 14:36:52 +1000
commitab0181030ad67818a8a8f0bb7fd994a992b8e4ac (patch)
treef55f8e314291b25e7c44db895ad959f3a78c7048 /src/emu
parent35f4e6b434dda194c7288bf5419b85972d46e1fd (diff)
-emu/rendlay.cpp: Fixed uninitialised variable breaking sdtor.
Also added some optional verbose logging for debugging group bounds calculation. -Updated another batch of layouts. Some chess layouts have had elements reordered in the XML to maintain stacking order when drawing.
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/rendlay.cpp38
1 files changed, 29 insertions, 9 deletions
diff --git a/src/emu/rendlay.cpp b/src/emu/rendlay.cpp
index d51a7165c5d..6c72b9928a8 100644
--- a/src/emu/rendlay.cpp
+++ b/src/emu/rendlay.cpp
@@ -32,6 +32,12 @@
#include <type_traits>
#include <utility>
+#define LOG_GROUP_BOUNDS_RESOLUTION (1U << 1)
+
+//#define VERBOSE (LOG_GROUP_BOUNDS_RESOLUTION)
+#define LOG_OUTPUT_FUNC osd_printf_verbose
+#include "logmacro.h"
+
/***************************************************************************
@@ -1116,7 +1122,7 @@ void layout_group::resolve_bounds(environment &env, group_map &groupmap, std::ve
{
set_render_bounds_xy(m_bounds, 0.0F, 0.0F, 1.0F, 1.0F);
environment local(env);
- bool empty;
+ bool empty(true);
resolve_bounds(local, m_groupnode, groupmap, seen, empty, false, false, true);
}
seen.pop_back();
@@ -1132,8 +1138,9 @@ void layout_group::resolve_bounds(
bool repeat,
bool init)
{
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Group '%s' resolve bounds empty=%s vistoggle=%s repeat=%s init=%s\n",
+ parentnode.get_attribute_string("name", ""), empty, vistoggle, repeat, init);
bool envaltered(false);
- bool unresolved(true);
for (util::xml::data_node const *itemnode = parentnode.get_first_child(); !m_bounds_resolved && itemnode; itemnode = itemnode->get_next_sibling())
{
if (!strcmp(itemnode->get_name(), "bounds"))
@@ -1144,13 +1151,10 @@ void layout_group::resolve_bounds(
}
else if (!strcmp(itemnode->get_name(), "param"))
{
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Environment altered%s, unresolving groups\n", envaltered ? " again" : "");
envaltered = true;
- if (!unresolved)
- {
- unresolved = true;
- for (group_map::value_type &group : groupmap)
- group.second.set_bounds_unresolved();
- }
+ for (group_map::value_type &group : groupmap)
+ group.second.set_bounds_unresolved();
if (!repeat)
env.set_parameter(*itemnode);
else
@@ -1171,6 +1175,9 @@ void layout_group::resolve_bounds(
else
union_render_bounds(m_bounds, itembounds);
empty = false;
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Accumulate item bounds (%s %s %s %s) -> (%s %s %s %s)\n",
+ itembounds.x0, itembounds.y0, itembounds.x1, itembounds.y1,
+ m_bounds.x0, m_bounds.y0, m_bounds.x1, m_bounds.y1);
}
else if (!strcmp(itemnode->get_name(), "group"))
{
@@ -1184,6 +1191,10 @@ void layout_group::resolve_bounds(
else
union_render_bounds(m_bounds, itembounds);
empty = false;
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Accumulate group '%s' reference explicit bounds (%s %s %s %s) -> (%s %s %s %s)\n",
+ itemnode->get_attribute_string("ref", ""),
+ itembounds.x0, itembounds.y0, itembounds.x1, itembounds.y1,
+ m_bounds.x0, m_bounds.y0, m_bounds.x1, m_bounds.y1);
}
else
{
@@ -1208,6 +1219,10 @@ void layout_group::resolve_bounds(
else
union_render_bounds(m_bounds, itembounds);
empty = false;
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Accumulate group '%s' reference computed bounds (%s %s %s %s) -> (%s %s %s %s)\n",
+ itemnode->get_attribute_string("ref", ""),
+ itembounds.x0, itembounds.y0, itembounds.x1, itembounds.y1,
+ m_bounds.x0, m_bounds.y0, m_bounds.x1, m_bounds.y1);
}
}
else if (!strcmp(itemnode->get_name(), "repeat"))
@@ -1235,8 +1250,9 @@ void layout_group::resolve_bounds(
}
}
- if (envaltered && !unresolved)
+ if (envaltered)
{
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Environment was altered, marking groups unresolved\n");
bool const resolved(m_bounds_resolved);
for (group_map::value_type &group : groupmap)
group.second.set_bounds_unresolved();
@@ -1244,7 +1260,11 @@ void layout_group::resolve_bounds(
}
if (!vistoggle && !repeat)
+ {
+ LOGMASKED(LOG_GROUP_BOUNDS_RESOLUTION, "Marking group '%s' bounds resolved\n",
+ parentnode.get_attribute_string("name", ""));
m_bounds_resolved = true;
+ }
}