diff --git a/libs/canvas/canvas.cc b/libs/canvas/canvas.cc index 87ddcb0c54..1c30a27575 100644 --- a/libs/canvas/canvas.cc +++ b/libs/canvas/canvas.cc @@ -28,6 +28,7 @@ #include #include +#include #include #include #include @@ -51,6 +52,7 @@ using namespace std; using namespace ArdourCanvas; uint32_t Canvas::tooltip_timeout_msecs = 750; +uint64_t ArdourCanvas::nodraw = 0; /** Construct a new Canvas */ Canvas::Canvas () @@ -67,6 +69,13 @@ Canvas::Canvas () _use_intermediate_surface = NULL != g_getenv("ARDOUR_INTERMEDIATE_SURFACE"); #endif set_epoch (); + + const char * dbg = g_getenv ("ARDOUR_CANVAS_NODRAW"); + + if (dbg) { + nodraw = strtoull (dbg, NULL, 0); + std::cerr << "\n\n **** SET NODRAW FROM " << dbg << " to " << std::hex << nodraw << std::dec << std::endl; + } } void diff --git a/libs/canvas/canvas/canvas.h b/libs/canvas/canvas/canvas.h index fa927794a1..9f90a21154 100644 --- a/libs/canvas/canvas/canvas.h +++ b/libs/canvas/canvas/canvas.h @@ -188,6 +188,7 @@ public: void set_debug_render (bool yn) { _debug_render = yn; } bool debug_render() const { return _debug_render; } + protected: Root _root; uint32_t _queue_draw_frozen; diff --git a/libs/canvas/canvas/fill.h b/libs/canvas/canvas/fill.h index 11e5072c3e..ba6f65c100 100644 --- a/libs/canvas/canvas/fill.h +++ b/libs/canvas/canvas/fill.h @@ -47,6 +47,9 @@ public: } bool fill () const { + if (ArdourCanvas::nodraw & 0x1) { + return false; + } return _fill; } diff --git a/libs/canvas/canvas/outline.h b/libs/canvas/canvas/outline.h index 0308ad1c37..33e2a685ed 100644 --- a/libs/canvas/canvas/outline.h +++ b/libs/canvas/canvas/outline.h @@ -51,6 +51,9 @@ public: virtual void set_outline_width (Distance); bool outline () const { + if (ArdourCanvas::nodraw & 0x2) { + return false; + } return _outline; } diff --git a/libs/canvas/canvas/types.h b/libs/canvas/canvas/types.h index 21f97d1a8a..7a8b8b0b0d 100644 --- a/libs/canvas/canvas/types.h +++ b/libs/canvas/canvas/types.h @@ -257,6 +257,8 @@ struct FourDimensions { } }; +extern LIBCANVAS_API uint64_t nodraw; + extern LIBCANVAS_API std::ostream & operator<< (std::ostream &, Rect const &); typedef std::vector Points; diff --git a/libs/canvas/line_set.cc b/libs/canvas/line_set.cc index bf2b130a6b..4bbe0b3feb 100644 --- a/libs/canvas/line_set.cc +++ b/libs/canvas/line_set.cc @@ -88,6 +88,10 @@ LineSet::set_extent (Distance e) void LineSet::render (Rect const & area, Cairo::RefPtr context) const { + if (ArdourCanvas::nodraw & 0x8) { + return; + } + /* area is in window coordinates */ for (vector::const_iterator i = _lines.begin(); i != _lines.end(); ++i) { diff --git a/libs/canvas/text.cc b/libs/canvas/text.cc index 355c3f116c..be9ad62fe6 100644 --- a/libs/canvas/text.cc +++ b/libs/canvas/text.cc @@ -206,6 +206,10 @@ Text::_redraw () const void Text::render (Rect const & area, Cairo::RefPtr context) const { + if (ArdourCanvas::nodraw & 0x4) { + return; + } + if (_text.empty()) { return; } diff --git a/libs/waveview/wave_view.cc b/libs/waveview/wave_view.cc index 6ffe5345e5..b7b1886fd5 100644 --- a/libs/waveview/wave_view.cc +++ b/libs/waveview/wave_view.cc @@ -960,6 +960,10 @@ WaveView::draw_image_in_gui_thread () const void WaveView::render (Rect const & area, Cairo::RefPtr context) const { + if (ArdourCanvas::nodraw & 0x10) { + return; + } + assert (_props->samples_per_pixel != 0); if (!_region) { // assert?