lp:ctwm

Created by Matthew Fuller on 2014-05-04 and last modified on 2018-11-12
Get this branch:
bzr branch lp:ctwm
Members of ctwm can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
ctwm
Project:
ctwm
Status:
Development

Recent revisions

648. By Matthew Fuller on 2018-11-12

Cleanup/adjust how signal handlers work.

Move them off into their own file to cut down on the stuff in
ctwm_main.c. Clear out handlers that haven't been compiled in in
ages, and ones that can't really work well. Remove
non-async-signal-safe calls and change the main ones around to just
setting a general flag. Have a more general "signal action needed"
flag for the event loop to trigger and call over.

647. By Matthew Fuller on 2018-11-11

Fix some possible leaks/use-after-free in InsertRGBColormap().

From twm. git revs 4512f268c689db62b46c88e813935c66eda14742 and
777236e942ae85bcacfdc2e086944a42cfed5b45.
Author: Alan Coopersmith <email address hidden>
    Found by Oracle's Parfait 2.2 static analyzer:

646. By Matthew Fuller on 2018-11-11

Do a bunch of reworking to allow large parts of the startup sequence to
sorta-work even without an actual X connection.

This aims at a visible purpose of being able to run --cfgchk even without
an X server to connect to. Some code is moved to after the config
parsing to allow that (including actually trying to take over the
screen). Various about-the-server info we need during config processing
is faked if necessary. Some of the code invoked by the config parsing
was directly interacting with the X server in ways that could be easily
delayed until afterward. Other parts couldn't be, but could be
conditionalized to stub themselves out if there were no connection, in
ways that probably won't affect anything for those cases since it's not
trying to _do_ anything with X in that situation.

A further effect of this is that --cfgchk now supports multiple screens
with their possibly different config files as well. The
tools/try_all_opts.pl script for trying the build options now empties out
the $DISPLAY env, so running the test suite through it won't try to
connect to your real server for better isolation.

Because some of the backend actions differ if there's no connection, it's
difficult to guarantee that --cfgchk without $DISPLAY will actually catch
all the problems it would otherwise. Things with colors and colormaps
are particularly likely spots to run into its limits here. Most of the
checks are still valid, however.

There is a non-zero chance that there are additional landmines in config
checking codepaths I didn't find in inspection and testing, that will
assume a valid connection, and segfault in a no-$DISPLAY --cfgchk.
Normal operation wouldn't hit them though, so their impact will be
limited to annoying a dev when it happens (which is good, since that'll
inspire the dev to go fix it ;).

645. By Matthew Fuller on 2018-11-11

Update libs-needed hints in README, since randr is on by default now.

644. By Matthew Fuller on 2018-11-10

Merge RANDR and Layout support.

This adjusts internal data structures defining our display layout to be
more flexible. When build with RANDR support (default) and the X server
supports the extension, the structures are built with knowledge of the
invididual monitors composing the desktop and how they're laid out. The
various zoom'ing functions now zoom just on the monitor they're on;
.x*zoom functions will zoom across the entire Screen.

This makes multi-monitor setups work much more fluidly, especially when
they're of differing resolutions or otherwise don't add up to an even
rectangular output.

643. By Matthew Fuller on 2018-11-10

Make sure we generate full HTML files, not just fragments, for these
outputs.

642. By Matthew Fuller on 2018-11-10

Comment, refactor, and lightly rework the startup process, particularly
the per-Screen handling loop.

More initialization is moved into the Init function which now also
handles allocation etc. Other initialization steps are better
documented, including their cross-relationships and ordering
requirements. Variables are moved to smaller and in some cases
artificial scopes for readability.

No visible changes expected.

641. By Matthew Fuller on 2018-11-02

Rejigger finding and starting parsing of the config file.

This splits the "go through our list of possible rc file locations"
step further out from the "[try to] parse a file" step, giving us a
function that directly does what you ask it it as well as the one
wrapping up guessing things to try. It also allows rewriting the
logic of tring possible locations into something straightforward,
instead of the magic-side-effect-riddled pseudo-loop it previously
used.

640. By Matthew Fuller on 2018-11-01

List the ctwmlib archive before the shared libs in linking the ctwm
binary, and leave a comment about why we need to.

639. By Matthew Fuller on 2018-11-01

Leave a comment about why we often have to pull in ${CTWMLIBS} on test
progs, to answer the question of why we sometimes do and sometimes
don't, and why we're setup to do it by default even when it's not
needed.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.