<feed xmlns='http://www.w3.org/2005/Atom'>
<title>paraslash/gui.c, branch next</title>
<subtitle>paraslash - network audio streaming tools</subtitle>
<id>https://git.tue.mpg.de/cgit/paraslash/atom?h=next</id>
<link rel='self' href='https://git.tue.mpg.de/cgit/paraslash/atom?h=next'/>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/'/>
<updated>2026-08-01T20:18:30Z</updated>
<entry>
<title>exec: Rename para_exec_cmdline_pid() to xexec().</title>
<updated>2026-08-01T20:18:30Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-07-22T17:43:18Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=542c4a5da15efc05342f99e092e6a2e2b831c126'/>
<id>urn:sha1:542c4a5da15efc05342f99e092e6a2e2b831c126</id>
<content type='text'>
This is shorter and conveys enough information. Rename the static para_exec()
as well.
</content>
</entry>
<entry>
<title>gui: Remove the "version" command.</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-29T21:58:37Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=4adf346e97d43628bbd6b0b044a7fd362abc4141'/>
<id>urn:sha1:4adf346e97d43628bbd6b0b044a7fd362abc4141</id>
<content type='text'>
The version string is shown in the version bar, so this internal command is
kind of moot.
</content>
</entry>
<entry>
<title>gui: Rename curses windows.</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-22T18:17:28Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=cc2c3172a0626c5a4d6a807a03469997e751b0c8'/>
<id>urn:sha1:cc2c3172a0626c5a4d6a807a03469997e751b0c8</id>
<content type='text'>
Rename in to sbar and sb to vbar, as this is still short but conveys the
meaning of both one-line windows better.
</content>
</entry>
<entry>
<title>gui: Remove two confusing local variables of init_wins().</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-21T22:26:38Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=990e9ce08e57e897be3d61febc828315cd2ecdec'/>
<id>urn:sha1:990e9ce08e57e897be3d61febc828315cd2ecdec</id>
<content type='text'>
The variables sep_y and sep_lines should have been renamed to pbar_y and
pbar_lines when the progress bar was implemented, but we may as well simply
remove them because sep_y always equals top_lines, and sep_lines is always one.
</content>
</entry>
<entry>
<title>gui: Introduce -&gt;print_status_items() of struct gui_theme.</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-05-31T20:59:26Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=3e44a5d4b71231b9a2ba8a5d478de0224eef38a2'/>
<id>urn:sha1:3e44a5d4b71231b9a2ba8a5d478de0224eef38a2</id>
<content type='text'>
This replaces the array of struct stat_item_data by a function pointer. The
array approach is still used by the colorful blackness theme, which now
defines its own array in gui_theme.c. This allows the definition of struct
stat_item_data to be private to gui_theme.c.

The "simple" theme now tries to display a suitable string to describe the
current audio file rather than always showing the basename. Drop the server
and audiod status items it used to show. It's called "simple", after all.

Both themes need to align the strings they print, so align_str() has
to become public.
</content>
</entry>
<entry>
<title>gui: Require ncurses.</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-01T17:56:41Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=4e8b5dce3020f809767c1036185230f74e59f43f'/>
<id>urn:sha1:4e8b5dce3020f809767c1036185230f74e59f43f</id>
<content type='text'>
The FreeBSD and NetBSD installations on which this software is tested both
provide the ncurses headers and libraries these days. This is enough reason to
justify the change because the non-ncurses build no longer gets any testing
and may well be broken already.

This change allows us to make use of extensions that are not part of the
standard. For starters, drop an ncurses specific #define, and prefer getmaxy()
over the silly get_num_lines() dance we do right now.
</content>
</entry>
<entry>
<title>gui: Inline clear_all_items().</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-01T20:23:03Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=535e108541e6f67ce88c74b6b70d3a3086e80ccb'/>
<id>urn:sha1:535e108541e6f67ce88c74b6b70d3a3086e80ccb</id>
<content type='text'>
Only one caller.
</content>
</entry>
<entry>
<title>gui: Avoid the para_audioc process.</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-05-26T21:31:29Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=3f0ad7aef67b6707f52c71931186ab0b20865a1a'/>
<id>urn:sha1:3f0ad7aef67b6707f52c71931186ab0b20865a1a</id>
<content type='text'>
This changes gui.c to no longer spawn a para_audioc process to get the status
items from para_audiod. Instead, the para_gui process connects directly to
audiod using the same mechanism as para_audioc. Besides being more efficient,
this approach has the advantage that status item updates are now atomic in
the sense that complete sideband packages (containing any number of status
items) are received, so torn status items can no longer occur.

To implement this, move the code that can be shared between gui and audioc
to a separate file, audioc_common.c. This file contains only one public
function: connect_audiod(). Since this function uses unix socket magic and
employs the sideband API, para_gui needs to link in net.o and sideband.o,
in addition to the new audioc_common.o.

With these changes in place, para_gui's --stat-command option becomes
unused. Drop it, as it's not worth the pain to introduce a depreciation
period. On the other hand, para_gui now needs an option to specify the path
to the socket on which para_audiod is expected to listen, so move the lopsub
stanza of para_audioc's --socket option to the new socket.m4 file and include
it from both the audioc and the gui lopsub suites.
</content>
</entry>
<entry>
<title>gui/audiod: Replace for_each_stat_item() by parse_status_items().</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-06-22T16:24:21Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=df82e17edd489dc9240428ab5f06ccc52707e2d9'/>
<id>urn:sha1:df82e17edd489dc9240428ab5f06ccc52707e2d9</id>
<content type='text'>
The old function received a callback, and called it once per item received.
This inevitably leads to situations where one status item is already uptodate
but others are not.

The replacement function no longer takes a callback pointer but a pointer
to the array of status items to update, and returns the mask of items that
have changed. Parse errors are now regarded as implementation bugs. We
still detect them and log an error, but the function can no longer fail.

Remove print_all_items() from gui.c since this can now be done in one line
by passing ~0 to print_stat_items().
</content>
</entry>
<entry>
<title>gui: Don't request a minimal delay when an external command is running.</title>
<updated>2026-07-14T18:11:18Z</updated>
<author>
<name>Andre Noll</name>
<email>maan@tuebingen.mpg.de</email>
</author>
<published>2026-07-08T15:09:29Z</published>
<link rel='alternate' type='text/html' href='https://git.tue.mpg.de/cgit/paraslash/commit/?id=c9f226e51b809aaab8733345df8188bfa66b8bfd'/>
<id>urn:sha1:c9f226e51b809aaab8733345df8188bfa66b8bfd</id>
<content type='text'>
This may lead to a busy loop when the external command is started at an
unfortunate moment.
</content>
</entry>
</feed>
