Commit graph

4663 commits

Author SHA1 Message Date
Daniel Eklöf
bcd28311f4
wayland: prevent hang when terminating due to broken Wayland connection
If the call to fdm_wayl() with EPOLLHUP was followed by calls to
wayl_roundtrip(), foot would hang.

The reason for this is that the EPOLLHUP handler in fdm_wayl() would
call wl_display_cancel_read().

wayl_roundtrip() also calls wl_display_cancel_read() (since we
normally have called wl_display_prepare_read()), before calling
wl_display_roundtrip().

When calling wl_display_cancel_read() two times in a row, without a
wl_display_prepare_read() in between, wl_display_roundtrip() hangs.

Fix by not calling wl_display_cancel_read() in fdm_wayl(). This
ensures our invariant holds: wl_display_prepare_read() is *always* in
effect outside of fdm_wayl().

Closes #651
2021-07-24 20:38:56 +02:00
Daniel Eklöf
51250c64cc
doc: meson: no need to check for scdoc again
We’re already checking for scdoc in the top-level meson.build
2021-07-24 16:42:47 +02:00
Daniel Eklöf
7c686208a1
meson: add -Ddocs=disabled|enabled|auto command line option
When enabled (the default, if scdoc is found), we build and install
the man pages, example foot.ini, readme, changelog and license files.
2021-07-24 13:12:10 +02:00
Daniel Eklöf
b8d68afbb9
Merge branch 'csd-title'
Closes #638
2021-07-24 11:03:15 +02:00
Daniel Eklöf
c38b3507bc
doc: foot.ini: mention that csd.font is sized using the title bar size 2021-07-24 11:02:44 +02:00
Daniel Eklöf
4c89006d06
foot.ini: add csd.font 2021-07-24 11:02:43 +02:00
Daniel Eklöf
7714fcde83
render: render_osd(): use fcft_text_run_rasterize(), if available 2021-07-24 11:02:43 +02:00
Daniel Eklöf
e2e28db7de
render: render_osd(): fix rendering of color bitmap glyphs 2021-07-24 11:02:43 +02:00
Daniel Eklöf
bf285ae00a
render: render_osd(): don’t re-instantiate foreground color for each glyph 2021-07-24 11:02:43 +02:00
Daniel Eklöf
5c683d2c08
render: render_osd(): don’t assume a monospace font 2021-07-24 11:02:43 +02:00
Daniel Eklöf
50f59fe575
config: add csd.font option 2021-07-24 11:02:43 +02:00
Daniel Eklöf
9985b8c713
changelog: window title in CSDs 2021-07-24 11:02:43 +02:00
Daniel Eklöf
0cf7a19616
render: csd_title(): use a custom font, sized based on the title bar’s height
We still use the primary font, but use a custom size, based on the
title bar’s height.

This fixes an issue where the window title could be way too small, or
way too big. And changed size when the terminal font size was changed.
2021-07-24 11:02:42 +02:00
Daniel Eklöf
4a41575cb5
render: render_osd() now needs a ‘font’ argument 2021-07-24 11:02:42 +02:00
Daniel Eklöf
5fe23c0215
render: render_osd(): pass font as argument 2021-07-24 11:02:42 +02:00
Daniel Eklöf
3d9536caff
render: refresh CSD in render_refresh_title(), not render_update_title()
This fixes an issue where the CSD title sometimes got stuck on an
“old” title.
2021-07-24 11:02:42 +02:00
Daniel Eklöf
61e4035c23
render: refresh CSDs when updating the title 2021-07-24 11:02:42 +02:00
Daniel Eklöf
468587b67f
render: csd_title(): use render_osd() to render the current window title 2021-07-24 11:02:42 +02:00
Daniel Eklöf
bbc26da87b
render: must now set alpha in bg color when calling render_osd() 2021-07-24 11:02:42 +02:00
Daniel Eklöf
7067c57399
render: render_osd(): set clip region, use background alpha
Set clip region in render_osd(). This ensures we don’t step outside
the pixman buffer when rendering the glyphs.

Furthermore, don’t ignore the alpha channel in the background color.

Move render_osd() to make it visible to the render_csd_*() functions.
2021-07-24 11:02:41 +02:00
Daniel Eklöf
e17c6fcbec
render: color_dim(): retain alpha channel 2021-07-24 11:02:41 +02:00
Daniel Eklöf
6b6abb0419
readme: add OSC-9 to list of supported OSC sequences 2021-07-24 11:02:06 +02:00
Craig Barnes
0a22183fdf osc: fix typo in LOG_DBG() message 2021-07-24 01:58:34 +01:00
Knut Anders Hatlen
9a8c9b649a readme: fix a typo 2021-07-23 21:09:49 +02:00
Daniel Eklöf
f281937335
pgo: add stub for search_selection_cancelled()
Fixes PGO build failures caused by
251545203b

Closes #648
2021-07-23 10:15:35 +02:00
Daniel Eklöf
14737d1d82
Merge branch 'search-crash-when-selection-is-cancelled'
Closes #644
2021-07-22 21:34:25 +02:00
Daniel Eklöf
7092a72ce4
search: redraw search box after selection has been cancelled 2021-07-22 17:57:52 +02:00
Daniel Eklöf
251545203b
search: reset match state when selection is cancelled
While we’re in scrollback search mode, the selection may be
cancelled (for example, if the application is scrolling out the
selected text). Trying to e.g. extend the search selection after this
has happened triggered a crash.

This fixes it by simply resetting the search match state when the
selection is cancelled.

Closes #644
2021-07-22 17:57:43 +02:00
Daniel Eklöf
a987b1bd99
doc: ctlseq: improve description of OSC 52 response 2021-07-22 12:02:28 +02:00
Daniel Eklöf
e327251d49
Merge branch 'pgo-shm-fixes'
Closes #642
2021-07-22 11:15:23 +02:00
Daniel Eklöf
2acd4b34c5
pgo: fix PGO builds with clang
Add stubs for shm_chain_new(), shm_chain_free() and shm_unref(). This
fixes ‘pgo’ linking failures in the ‘generate’ phase when doing a PGO
build with clang.

Closes #642
2021-07-22 10:02:52 +02:00
Daniel Eklöf
029920ddcc
Merge branch 'prevent-overflow-into-margin' 2021-07-20 20:08:20 +02:00
Timur Celik
a410734f96 render: prevent cells from overflowing into margin 2021-07-20 11:44:27 +02:00
Daniel Eklöf
4a50abece3
changelog: add new ‘unreleased’ section 2021-07-18 18:07:26 +02:00
Daniel Eklöf
3309dce68a
Merge branch 'releases/1.8' 2021-07-18 18:07:05 +02:00
Daniel Eklöf
cd8c96d746
meson/pkgbuild: bump version to 1.8.2 2021-07-18 17:58:05 +02:00
Daniel Eklöf
721174ffea
changelog: prepare for 1.8.2 2021-07-18 17:57:42 +02:00
Daniel Eklöf
4d82e04860
Merge branch 'master' into releases/1.8 2021-07-18 17:57:11 +02:00
Daniel Eklöf
318385040c
changelog: remove entries that are no longer relevant
The tweak.allow-overflowing-double-width-glyphs option have been
superseded by tweak.overflowing-glyphs.
2021-07-18 17:16:17 +02:00
Daniel Eklöf
e6b13af59d
Merge branch 'csd-shared-shm-pool' 2021-07-18 17:13:03 +02:00
Daniel Eklöf
20fc80e57e
render: use a single backing SHM pool for CSD surface buffers 2021-07-18 16:46:43 +02:00
Daniel Eklöf
5b6a2b0eaf
shm: get_many(): allow “NULL” buffers - buffers where width or height is 0
When a zero-sized buffer is requested, simply return a NULL buffer,
instead of crashing with a Wayland protocol error.

This makes it easier to request many buffers, where some may be
zero-sized, without having to pack the width/height and bufs arrays.
2021-07-18 16:44:49 +02:00
Daniel Eklöf
e8e9cd5595
term: erase_scrollback(): destroy sixels that touch the scrollback 2021-07-18 16:31:33 +02:00
Daniel Eklöf
f65e062ce4
sixel: destroy(): don’t unref a NULL pixman image 2021-07-18 16:30:42 +02:00
Daniel Eklöf
a577496f8f
Merge branch 'crash-when-selection-is-in-scrollback-and-scrollback-is-erased'
Closes #633
2021-07-18 16:15:18 +02:00
Daniel Eklöf
7d8884fec4
changelog: crash when \E[3J was executed with a selection in the scrollback 2021-07-18 16:14:25 +02:00
Daniel Eklöf
d0a7f999c6
term: add unit test for term_erase_scrollback() 2021-07-18 16:14:25 +02:00
Daniel Eklöf
5f0ceb72f1
csi: erase scrollback: cancel selection if it touches the scrollback
This breaks out the scrollback erasing logic for \E[3J from csi.c, and
moves it to the new function term_erase_scrollback(), and changes the
logic to calculate the start and end row (absolute) numbers of the
scrollback, and only iterate those, instead of iterating *all* rows,
filtering out those that are on-screen.

It also adds an intersection range check of the selection range, and
cancels the selection if it touches any of the deleted scrollback
rows.

This fixes a crash when trying to render the next frame, since the
selection now references rows that have been freed.

Closes #633
2021-07-18 16:14:21 +02:00
Daniel Eklöf
34de799f90
Merge branch 'refactor-shm-buffer-management' 2021-07-18 11:41:14 +02:00
Daniel Eklöf
6657146a20
shm: chain_free: BUG() if there are buffers remaining after purge
There may be buffers left, if their destruction has been
deferred. However, they should be on the 'deferred' list, not the
chain's buffer list.

If there are buffers left on the chain's list, that means someone
forgot to call shm_unref().
2021-07-17 19:14:42 +02:00