ardour/libs/canvas/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
..
arc.h canvas: several steps further with box packing and size allocation 2021-08-13 12:51:37 -06:00
arrow.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
box.h canvas: several steps further with box packing and size allocation 2021-08-13 12:51:37 -06:00
canvas.h canvas: add a drawing-request-freeze/thaw API 2022-04-05 20:52:09 -06:00
circle.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
container.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
curve.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
debug.h canvas: add Table debug bit 2021-09-14 18:29:39 -06:00
fill.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
flag.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
framed_curve.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
fwd.h Add missing class to canvas forward declarations 2021-02-14 00:54:17 +01:00
grid.h Canvas: change API of Item::child_changed() to include bool indicate bounding_box change 2021-08-13 12:51:25 -06:00
image.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
interpolated_curve.h Fix remaining doxygen warnings (!) 2019-09-30 21:03:29 +02:00
item.h canvas: manually remove changes from 6f91dc0799 and implement same goal in a different way 2022-01-20 09:45:47 -07:00
line.h NO-OP: whitespace, indent 2019-09-30 21:03:20 +02:00
line_set.h libcanvas: reapply LineSet::add_line -> add_coord change after rebase conflicts with master 2021-08-13 12:51:27 -06:00
lookup_table.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
meter.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
note.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
outline.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
pixbuf.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
poly_item.h NO-OP: consistent function and variable naming 2020-04-10 18:06:42 +02:00
poly_line.h NO-OP: whitespace, indent 2019-09-30 21:03:20 +02:00
polygon.h NO-OP: whitespace, indent 2019-09-30 21:03:20 +02:00
rectangle.h ArdourCanvas Rectangle: allow subclasses access to _rect 2021-12-07 16:32:49 -06:00
root_group.h canvas: remove intrinsic size concept, fall back to requested size; converge on gtk style size_request 2021-08-13 12:51:37 -06:00
ruler.h ruler: make ::set_metric() API consistent with constructor by using ptr 2021-12-24 15:34:18 -07:00
scroll_group.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
stateful_image.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
step_button.h step button for Canvas (used by BeatBox GUI) 2021-08-13 12:51:26 -06:00
table.h canvas table: separate out row & col homogeneity 2021-10-02 16:19:49 -06:00
text.h canvas text: generalize ::font_size_for_height() to handle different font families 2021-10-19 10:54:27 -06:00
tracking_text.h NO-OP: whitespace 2020-12-30 03:25:57 +01:00
types.h canvas: just use stack and size counter instead of std::vector<> 2021-09-14 21:22:56 -06:00
utils.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
visibility.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00
widget.h canvas: use fwd decl instead of header inclusion for CairoWidget 2021-09-10 12:15:24 -06:00
xfade_curve.h Update canvas/UI lib GPL boilerplate and (C) from git log 2019-08-03 15:53:17 +02:00