ardour/libs/canvas
Paul Davis b6d0f8f661 canvas: add a drawing-request-freeze/thaw API
If queue_draw is "frozen", we simply accumulate drawing
requests in a (union) rectangle, and when finally "thawed"
the canvas submits a single redraw request for the entire
accumulated rect.

Although in theory this is all that GTK/GDK does for
draw requests, callgrind reveals significant costs
associated with the actual calltree for GtkWidget::queue_draw_area().

One potential cost is that GDK also maintains a list of
invalidated rectangles in addition to the union, and
for MIDI regions with thousands of notes, this can represent
real overhead. This approach dispenses with the rect list,
since our Canvas drawing model only uses the union rectangle
anyway.
2022-04-05 20:52:09 -06:00
..
MSVCcanvas Adapt our remaining MSVC projects for 'boost::atomic' (in case it later gets extended to the other libs) 2018-09-30 09:19:28 +01:00
benchmark NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
canvas canvas: add a drawing-request-freeze/thaw API 2022-04-05 20:52:09 -06:00
doc initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
test remove Kiwi constraint-based packing code from canvas library and users (library version) 2021-11-04 11:25:30 -06:00
Notes initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
arc.cc ArdourCanvas::Arc (i.e. Circle) should allow for child items to be drawn 2022-01-18 16:42:00 -06:00
arrow.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
box.cc cnavas: add lots more debug traces to box, and an explanatory comment 2021-09-10 13:02:01 -06:00
build-and-run-benchmark.sh initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
build-and-run-manual-test.sh initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
build-and-run-tests.sh initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
canvas.cc canvas: add a drawing-request-freeze/thaw API 2022-04-05 20:52:09 -06:00
circle.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
container.cc canvas: bounding box changes for Container 2021-08-13 12:51:37 -06:00
ct Canvas: tweak test script runner 2021-08-13 12:51:26 -06:00
curve.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
debug.cc canvas: add Table debug bit 2021-09-14 18:29:39 -06:00
fill.cc NOOP: remove whitespace 2021-08-13 12:51:25 -06:00
flag.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
framed_curve.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
grid.cc canvas: call Item::bounding_box() to recompute bounding box when needed 2021-08-13 12:51:37 -06:00
image.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
item.cc canvas: fixing missing initializer for _scroll_translation in 3rd Item constructor 2022-01-27 14:02:34 -07:00
line.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
line_set.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
lookup_table.cc canvas; remove already-commented debug output 2021-08-13 12:51:37 -06:00
meter.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
note.cc change velocity bar inside notes to extend to edges of note 2020-03-26 10:12:54 -06:00
outline.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
pixbuf.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
poly_item.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00
poly_line.cc NO-OP: whitespace 2020-04-10 18:32:18 +02:00
polygon.cc canvas: call Item::bounding_box() to recompute bounding box when needed 2021-08-13 12:51:37 -06:00
rectangle.cc canvas: several steps further with box packing and size allocation 2021-08-13 12:51:37 -06:00
root_group.cc Remove 18 month old debug messages 2022-02-01 22:01:41 +01:00
ruler.cc ruler: make ::set_metric() API consistent with constructor by using ptr 2021-12-24 15:34:18 -07:00
run-manual-test.sh initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
run-tests.sh initial commit of hand merging, plus getting "ancient" waf script to work correctly 2013-04-04 00:32:52 -04:00
scroll_group.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
stateful_image.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
step_button.cc canvas: items should not add child bboxes in their ::compute_bounding_box() method, Item::bounding_box() does that 2021-08-13 12:51:37 -06:00
table.cc canvastable: fix logic error in ::compute_bounding_box() 2021-10-03 16:46:25 -06:00
text.cc canvas text: generalize ::font_size_for_height() to handle different font families 2021-10-19 10:54:27 -06:00
tracking_text.cc Fix tracking-text offset 2020-12-30 03:26:00 +01:00
types.cc canvas; change operator<<() for Rect to show BIG instead of gigantic 64 bit numbers 2021-08-13 12:51:36 -06:00
utils.cc Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
widget.cc Canvas: improve behavior of Widget::compute_bounding_box() 2021-09-10 12:59:29 -06:00
wscript wscript: drop configure statements already present in the top level wscript 2022-01-22 22:19:03 +01:00
xfade_curve.cc canvas: use Item::bb_clean() to mark _bounding_box_dirty false 2021-08-13 12:51:36 -06:00