From f5d67e65208db7f081c79d683d3daff99af74453 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 24 Jun 2020 18:11:37 -0600 Subject: [PATCH] Canvas: temporary easy way to get debug output from Canvas::render() in a test program --- libs/canvas/canvas.cc | 7 ++++++- libs/canvas/item.cc | 21 ++++++++++++--------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index b7a2d2769e..c2db1e6331 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -108,6 +108,9 @@ Canvas::zoomed () pick_current_item (0); // no current mouse position } +static bool debug_render = true; +#define CANVAS_DEBUG + /** Render an area of the canvas. * @param area Area in window coordinates. * @param context Cairo context to render to. @@ -120,7 +123,7 @@ Canvas::render (Rect const & area, Cairo::RefPtr const & context _last_render_start_timestamp = g_get_monotonic_time(); #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (debug_render || DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { cerr << this << " RENDER: " << area << endl; //cerr << "CANVAS @ " << this << endl; //dump (cerr); @@ -133,6 +136,7 @@ Canvas::render (Rect const & area, Cairo::RefPtr const & context Rect root_bbox = _root.bounding_box(); if (!root_bbox) { /* the root has no bounding box, so there's nothing to render */ + cerr << "no bbox\n"; return; } @@ -143,6 +147,7 @@ Canvas::render (Rect const & area, Cairo::RefPtr const & context area, so render it. */ + cerr << "root draw\n"; _root.render (draw, context); #if defined CANVAS_DEBUG && !PLATFORM_WINDOWS diff --git a/libs/canvas/item.cc b/libs/canvas/item.cc index 9deb82c517..8c39db1e4e 100644 --- a/libs/canvas/item.cc +++ b/libs/canvas/item.cc @@ -747,9 +747,14 @@ Item::covers (Duple const & point) const /* nesting/grouping API */ +static bool debug_render = true; +#define CANVAS_DEBUG 1 + void Item::render_children (Rect const & area, Cairo::RefPtr context) const { + cerr << "I::rc\n"; + if (_items.empty()) { return; } @@ -758,7 +763,7 @@ Item::render_children (Rect const & area, Cairo::RefPtr context) std::vector items = _lut->get (area); #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (debug_render || DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { cerr << string_compose ("%1%8 %2 @ %7 render %5 @ %6 %3 items out of %4\n", _canvas->render_indent(), (name.empty() ? string ("[unnamed]") : name), items.size(), _items.size(), area, _position, 0 /* this */, whatami()); @@ -771,7 +776,7 @@ Item::render_children (Rect const & area, Cairo::RefPtr context) if (!(*i)->visible ()) { #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (debug_render || DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] invisible - skipped\n"; } #endif @@ -782,7 +787,7 @@ Item::render_children (Rect const & area, Cairo::RefPtr context) if (!item_bbox) { #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (debug_render || DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { cerr << _canvas->render_indent() << "Item " << (*i)->whatami() << " [" << (*i)->name << "] empty - skipped\n"; } #endif @@ -796,16 +801,13 @@ Item::render_children (Rect const & area, Cairo::RefPtr context) Rect draw = d; if (draw.width() && draw.height()) { #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (debug_render || DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { if (dynamic_cast(*i) == 0) { cerr << _canvas->render_indent() << "render " << ' ' << (*i) << ' ' - << (*i)->whatami() - << ' ' - - << (*i)->name + << (*i)->whoami() << " item " << item_bbox << " window = " @@ -826,7 +828,7 @@ Item::render_children (Rect const & area, Cairo::RefPtr context) } else { #ifdef CANVAS_DEBUG - if (DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { + if (debug_render || DEBUG_ENABLED(PBD::DEBUG::CanvasRender)) { cerr << string_compose ("%1skip render of %2 %3, no intersection between %4 and %5\n", _canvas->render_indent(), (*i)->whatami(), (*i)->name, item, area); } @@ -837,6 +839,7 @@ Item::render_children (Rect const & area, Cairo::RefPtr context) --render_depth; } +#undef CANVAS_DEBUG void Item::prepare_for_render_children (Rect const & area) const