Commit Graph

1514 Commits

Author SHA1 Message Date
nick black
e5c9168523
notcurses_init(): dup() ttyfd so we can always close() it 2020-07-03 16:40:53 -04:00
nick black
f7fc665c13
Acquire and use ttyfd properly in ncdirect #752
When we don't have an actual terminal in ncdirect, return
placeholder 80x24 for ncdirect_dim_y()/ncdirect_dim_x(), but
don't go querying e.g. a redirected file for its dimensions.
Similarly, only request info about cursor position from a true
TTY (we're otherwise likely to hang, or at best get meaningless
data). Rewrite 'direct' PoC to use ncdirect_dim_*().
Add tty_emit(). Closes #752.
2020-07-03 15:28:28 -04:00
Nick Black
415d4b813f
Tight work on unit testing, controlling tty vs output fd (#758)
* Some things go to the FILE* we're provided. Some can only go to a controlling terminal. Check to see if the FILE we're given is a TTY. If not, open up /dev/tty #752.
* term_emit(): fflush() can return EAGAIN. Loop on it to eliminate a rare error on shutdown that particularly affected unit tests (where we start and shut down Notcurses many times in a row).
* sgr poc: check return value of setlocale()
* drone: run all unit tests
* CMake: add some tests using PoCs
* ncneofetch: print even small palettes
2020-07-02 18:03:52 -04:00
nick black
2370329077
loop on fflush()->EAGAIN
sometimes when we call fflush(ttyfp), we get EAGAIN. we can
loop on this and force the flush. without it, we (fairly rarely)
get errors on shutdown, sometimes manifesting as unit test
failures (especially in the rust wrappers). #742
2020-07-02 17:34:30 -04:00
nick black
6b5fd0d009
ncdirect_render_image(): handle newlines properly
in ncdirect_render_image(), we want to emit newlines if and
only if we did not hit the right border. we want to emit
cuds (cursor downs) if and only if we've hit the bottom
border. this resolves all mysteries of blank lines, eliminating
a FIXME. it also fixes ncneofetch's image display on very
wide terminals. closes #756. also removes the display semaphore
in ncneofetch, using a more natural pthread_join().
2020-07-02 00:10:59 -04:00
nick black
31c584e2e6 ncneofetch: work no matter y offset, done! #750 2020-07-01 20:30:06 -04:00
nick black
8fedec050c ncneofetch: draw infoplane with notcurses + margin_t #750 2020-07-01 20:30:06 -04:00
nick black
93ff1d7789 ncdirect: open an fd for the controlling terminal
Use ctermid(3) to identify the controlling terminal device.
When one exists, open(2) it up, and retain this file descriptor
across the life of the ncdirect context. Allow a failure, since
not everything requires such an fd. This will be used for tty-
specific activity such as ioctl()s and escape sequences
involving terminal replies (such as get absolute cursor
position). #752
2020-07-01 20:30:06 -04:00
nick black
cda4253a0a ncneofetch: sem_post() on error path 2020-07-01 20:30:06 -04:00
nick black
a8db078689 ncneofetch: default background on palette 2020-07-01 20:30:06 -04:00
nick black
9ae1c6b3df ncdirect_render_image: fix arguments to rgba_blitter_low #751 2020-07-01 20:30:06 -04:00
nick black
4e04c3ae8f ncneofetch: fill out first line of infoplane 2020-07-01 20:30:06 -04:00
nick black
45fbbdb4ef ncneofetch: align output #750 2020-07-01 20:30:06 -04:00
nick black
33cb21d917 ncdirect_printf_aligned() added #750 2020-07-01 20:30:06 -04:00
nick black
4889e9b391 ncneofetch: scale 2020-07-01 20:30:06 -04:00
nick black
60619fc4b9 ncneofetch: move back to NCSCALE_SCALE #750 2020-07-01 20:30:06 -04:00
nick black
7eb70dad71 ncneofetch: display() in direct mode #750 2020-07-01 20:30:06 -04:00
nick black
7a022a4c76 ncneofetch: show palette via direct mode #750 2020-07-01 20:30:06 -04:00
nick black
452fdc671d
intro: move legend into main plane 2020-07-01 03:24:15 -04:00
nick black
4863c7e3df
ncdirect_image_render: restore NCBLIT_2x2 #751 2020-07-01 01:14:42 -04:00
nick black
0586adbe24
ffmpeg: disable debugging cruft erp 2020-06-30 00:43:18 -04:00
nick black
8a2f86ea16 vizdirect: use DFSG-safe media only #725 2020-06-30 00:18:02 -04:00
nick black
fd064b0f2a ncvisual_render_image(): working! #725 2020-06-30 00:18:02 -04:00
nick black
40d0efcece ncdirect_render_image(): just about working #725 2020-06-30 00:18:02 -04:00
nick black
277cbc9c16 ncdirect_render_image(): getting closer #725 2020-06-30 00:18:02 -04:00
nick black
3bb789eb74 refactoring to prep for ncdirect_visual 2020-06-30 00:18:02 -04:00
nick black
229079696d ncvisual refactoring to support ncdirect 2020-06-30 00:18:02 -04:00
nick black
052e10ebe1
subproc: fix up USING_PIDFD definition 2020-06-29 00:20:42 -04:00
nick black
b9dc9a7f1c
subprocs: simplify __linux__ check 2020-06-28 23:49:45 -04:00
nick black
dda6d2f596
subproc: check for __NR_clone3 2020-06-28 22:19:41 -04:00
nick black
8310b687ac
demo: enable FPS plot by default #744 2020-06-28 21:09:26 -04:00
nick black
ae1b45efbf
plot: make legend glyph-transparent #744 2020-06-28 21:07:06 -04:00
nick black
9a5a4a65ca demo: enable HUD by default #743 2020-06-28 20:50:35 -04:00
nick black
8da3e6f968 HUD: fully glyph-transparent, looks great #743 2020-06-28 20:47:42 -04:00
nick black
ba1c9868e5 HUD: glyph-transparent inter-column gap #743 2020-06-28 20:39:02 -04:00
nick black
64857e12ac HUD: glyph transparency on frame count #743 2020-06-28 20:34:12 -04:00
nick black
96575fb402 hud: glyph-transparent right side 2020-06-28 20:22:02 -04:00
nick black
1cbf98cb6c
notcurses_init: allow US-ASCII, used by FreeBSD 2020-06-28 18:56:40 -04:00
nick black
3d6585e445
Trigger clone3()+waitid() path off definition of P_PIDFD #733 2020-06-28 17:38:51 -04:00
Nick Black
d5dca33e00 ncneofetch: don't print (null) for distro_pretty 2020-06-28 06:43:29 -04:00
Nick Black
d52ced823c make Wide unit tests sensitive to local irregularities #741 2020-06-28 06:40:00 -04:00
nick black
5815a65fb5
ncsubproc: properly catch exit on non-pidfd path
When we don't have a pidfd available on which to poll(2) (this
is true of Linux pre-5.3, and FreeBSD), we can't rely on a
child death breaking our poll loop. Instead, in this case launch
a second thread, which just sits on a blocking waitpid(2). If
it gets an exit, it calls the completion callback, triggering
the teardown. Closes #728, and ought lets us run the test suite
on FreeBSD.
2020-06-28 05:56:38 -04:00
nick black
6303e803f6
outro: don't obfuscate globe with acai plane 2020-06-28 05:55:04 -04:00
nick black
9fe48f8539 procroller/fileroller: enable scrolling on standard plane 2020-06-28 05:50:42 -04:00
nick black
6f6826238e
mojibake: improve topside a tad 2020-06-28 04:04:07 -04:00
nick black
5513707d8d
allglyph: don't print UTF-16 surrogate characters #740 2020-06-28 03:54:30 -04:00
nick black
354152b48b
Redefine CELL_ALPHA_ in their natural forms
CELL_ALPHA_OPAQUE et al were defined as 0..3, meaning
CELL_ALPHA_SHIFT had to be used to compare them to their
channel representations. Instead, define them in said
representation outright, eliminating the need to shift while
retaining arithmetic properties, and zero initialization for
CELL_ALPHA_OPAQUE. Eliminate CELL_ALPHA_SHIFT #738.
2020-06-28 01:53:42 -04:00
nick black
3985085d04
terminfo: capability is "rev" not "reverse"
While I'm at it, comment up all these properties,
and eliminate double lookup of smkx.
2020-06-28 01:45:18 -04:00
nick black
cdd96af8df
trans: put the legend on top to avoid FPS plot 2020-06-28 01:44:23 -04:00
nick black
78c2cef7e9
Use NCBLIT_2x2 by default with NCSCALE_STRETCH
We're not using NCBLIT_2x2 by default because it warps the
aspect ratio. If we're using NCSCALE_STRETCH, though, we've
(1) already indicated that aspect ratio isn't terribly
important to us and (2) are trying to maximize the space.
Since NCBLIT_2x2 is best for large images anyway, make it
the default when NCSCALE_STRECTH is being used.

Remove all explicit uses of NCBLIT_2x2 when NCSCALE_STRETCH
is being used in notcurses-demo.
2020-06-25 14:09:15 -04:00