summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-arena-shape.cpp3
-rw-r--r--src/marker.cpp7
2 files changed, 9 insertions, 1 deletions
diff --git a/src/display/nr-arena-shape.cpp b/src/display/nr-arena-shape.cpp
index 8a2b27f4f..550195c7c 100644
--- a/src/display/nr-arena-shape.cpp
+++ b/src/display/nr-arena-shape.cpp
@@ -370,6 +370,7 @@ nr_arena_shape_render(cairo_t *ct, NRArenaItem *item, NRRectL *area, NRPixBlock
// to render svg:pattern
has_fill = shape->nrstyle.prepareFill(ct, &shape->paintbox);
has_stroke = shape->nrstyle.prepareStroke(ct, &shape->paintbox);
+ has_stroke &= (shape->nrstyle.stroke_width != 0);
if (has_fill || has_stroke) {
// TODO: remove segments outside of bbox when no dashes present
@@ -387,7 +388,7 @@ nr_arena_shape_render(cairo_t *ct, NRArenaItem *item, NRRectL *area, NRPixBlock
cairo_restore(ct);
}
- /* Render markers into parent buffer */
+ // marker rendering
for (NRArenaItem *child = shape->markers; child != NULL; child = child->next) {
unsigned int ret = nr_arena_item_invoke_render(ct, child, area, pb, flags);
if (ret & NR_ARENA_ITEM_STATE_INVALID) return ret;
diff --git a/src/marker.cpp b/src/marker.cpp
index 6917c0b71..f89dd2bc0 100644
--- a/src/marker.cpp
+++ b/src/marker.cpp
@@ -614,6 +614,13 @@ sp_marker_show_instance ( SPMarker *marker, NRArenaItem *parent,
unsigned int key, unsigned int pos,
Geom::Matrix const &base, float linewidth)
{
+ // do not show marker if linewidth == 0 and markerUnits == strokeWidth
+ // otherwise Cairo will fail to render anything on the tile
+ // that contains the "degenerate" marker
+ if (marker->markerUnits == SP_MARKER_UNITS_STROKEWIDTH && linewidth == 0) {
+ return NULL;
+ }
+
for (SPMarkerView *v = marker->views; v != NULL; v = v->next) {
if (v->key == key) {
if (pos >= v->items.size()) {