From 54819dbcde1c1e4f31f205a51f97b51eaa7f0795 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 28 Jun 2016 19:11:58 +0200 Subject: [PATCH] Fix crash when using TextGraphic in texts --- panda/src/text/textAssembler.cxx | 42 +++++++++++++++++--------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/panda/src/text/textAssembler.cxx b/panda/src/text/textAssembler.cxx index 996713a85a..933712c531 100644 --- a/panda/src/text/textAssembler.cxx +++ b/panda/src/text/textAssembler.cxx @@ -544,32 +544,34 @@ assemble_text() { } } - if (properties->has_shadow()) { + if (!placement._glyph.is_null()) { + if (properties->has_shadow()) { + if (_dynamic_merge) { + if (placement._glyph->has_quad()) { + placement.assign_quad_to(quad_shadow_map, shadow_state, shadow); + } else { + placement.assign_append_to(geom_shadow_collector_map, shadow_state, shadow); + } + } else { + placement.assign_to(shadow_geom_node, shadow_state, shadow); + } + + // Don't shadow the graphics. That can result in duplication of button + // objects, plus it looks weird. If you want a shadowed graphic, you + // can shadow it yourself before you add it. + // placement.copy_graphic_to(shadow_node, shadow_state, shadow); + any_shadow = true; + } + if (_dynamic_merge) { if (placement._glyph->has_quad()) { - placement.assign_quad_to(quad_shadow_map, shadow_state, shadow); + placement.assign_quad_to(quad_map, text_state); } else { - placement.assign_append_to(geom_shadow_collector_map, shadow_state, shadow); + placement.assign_append_to(geom_collector_map, text_state); } } else { - placement.assign_to(shadow_geom_node, shadow_state, shadow); + placement.assign_to(text_geom_node, text_state); } - - // Don't shadow the graphics. That can result in duplication of button - // objects, plus it looks weird. If you want a shadowed graphic, you - // can shadow it yourself before you add it. - // placement.copy_graphic_to(shadow_node, shadow_state, shadow); - any_shadow = true; - } - - if (_dynamic_merge) { - if (placement._glyph->has_quad()) { - placement.assign_quad_to(quad_map, text_state); - } else { - placement.assign_append_to(geom_collector_map, text_state); - } - } else { - placement.assign_to(text_geom_node, text_state); } placement.copy_graphic_to(text_node, text_state); }