Update SPDX-License-Identifier from MIT OR X11 (or MIT OR X11 OR AGPLv3+ variants)
to the canonical X11 OR MIT OR AGPL-3.0-or-later on 95 existing source files.
Add the triple-license header to 33 newly-identified files authored by Enrico
Weigelt that were missing SPDX headers entirely.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
A namespace created at runtime via the CreateNamespace protocol request
never got a virtual root window assigned: XnsCreate() left rootWindow at
its calloc'd NULL, since only hookInitRootWindow() (a one-shot
PostInitRootWindowCallback fired once at boot, before any client can
reach the extension) ever populated that field, for the fixed set of
namespaces known from the config file at that point.
Any client placed into such a namespace then crashed the whole server
with a NULL-pointer segfault in hookWindowProperty() on its very first
GetProperty request (Xext/namespace/hook-windowproperty.c:37,
'subj->ns->rootWindow->drawable.id') - which virtually every X11 client
issues during normal startup. Reproduced end-to-end via a real
FlyingTux-managed container app connecting through a freshly created
namespace.
Factor the per-namespace virtual-root-window creation out of
hookInitRootWindow() into XnsCreateVirtualRoot(), and call it from
XnsCreate() too, so a namespace created via the protocol gets the same
virtual root a config-time one gets at boot.
Signed-off-by: Enrico Weigelt, metux IT consult <enrico.weigelt@vnc.biz>
For each namespace creating a fake (invisible) root window, which can be
used for storing per-namespace properties (eg. cut buffers), etc.
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>