[PATCH xserver v2 3/9] xfree86: Create VT atoms from the root window callback (v2)
walter harms
wharms at bfs.de
Mon Apr 11 12:17:55 UTC 2016
Am 05.04.2016 19:54, schrieb Adam Jackson:
> v2: Fix swapped callback args
>
> Signed-off-by: Adam Jackson <ajax at redhat.com>
> ---
> hw/xfree86/common/xf86Init.c | 67 +++++++++++++++++---------------------------
> 1 file changed, 25 insertions(+), 42 deletions(-)
>
> diff --git a/hw/xfree86/common/xf86Init.c b/hw/xfree86/common/xf86Init.c
> index f5f407e..744af7c 100644
> --- a/hw/xfree86/common/xf86Init.c
> +++ b/hw/xfree86/common/xf86Init.c
> @@ -381,10 +381,28 @@ AddSeatId(CallbackListPtr *pcbl, void *data, void *screen)
> "Failed to register seat property\n");
> }
>
> -/* The memory storing the initial value of the XFree86_has_VT root window
> - * property. This has to remain available until server start-up, so we just
> - * use a global. */
> -static CARD32 HasVTValue = 1;
> +static void
> +AddVTAtoms(CallbackListPtr *pcbl, void *data, void *screen)
> +{
> +#define VT_ATOM_NAME "XFree86_VT"
Just for my curiosity is VT_ATOM_NAME used somewhere else ?
Otherwise a s/VT_ATOM_NAME/"XFree86_VT" would be sufficient
just my 2 cents,
re,
wh
> + int err, HasVT = 1;
> + ScreenPtr pScreen = screen;
> + Atom VTAtom = MakeAtom(VT_ATOM_NAME, sizeof(VT_ATOM_NAME) - 1, TRUE);
> + Atom HasVTAtom = MakeAtom(HAS_VT_ATOM_NAME, sizeof(HAS_VT_ATOM_NAME) - 1,
> + TRUE);
> +
> + err = dixChangeWindowProperty(serverClient, pScreen->root, VTAtom,
> + XA_INTEGER, 32, PropModeReplace, 1,
> + &xf86Info.vtno, FALSE);
> +
> + err |= dixChangeWindowProperty(serverClient, pScreen->root, HasVTAtom,
> + XA_INTEGER, 32, PropModeReplace, 1,
> + &HasVT, FALSE);
> +
> + if (err != Success)
> + xf86DrvMsg(pScreen->myNum, X_WARNING,
> + "Failed to register VT properties\n");
> +}
>
> /*
> * InitOutput --
> @@ -727,44 +745,6 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
> }
> formatsDone = TRUE;
>
> - if (xf86Info.vtno >= 0) {
> -#define VT_ATOM_NAME "XFree86_VT"
> - Atom VTAtom = -1;
> - Atom HasVTAtom = -1;
> - CARD32 *VT = NULL;
> - CARD32 *HasVT = &HasVTValue;
> - int ret;
> -
> - /* This memory needs to stay available until the screen has been
> - initialized, and we can create the property for real.
> - */
> - if ((VT = malloc(sizeof(CARD32))) == NULL) {
> - FatalError
> - ("Unable to make VT property - out of memory. Exiting...\n");
> - }
> - *VT = xf86Info.vtno;
> -
> - VTAtom = MakeAtom(VT_ATOM_NAME, sizeof(VT_ATOM_NAME) - 1, TRUE);
> - HasVTAtom = MakeAtom(HAS_VT_ATOM_NAME,
> - sizeof(HAS_VT_ATOM_NAME) - 1, TRUE);
> -
> - for (i = 0, ret = Success; i < xf86NumScreens && ret == Success;
> - i++) {
> - ret =
> - xf86RegisterRootWindowProperty(xf86Screens[i]->scrnIndex,
> - VTAtom, XA_INTEGER, 32, 1,
> - VT);
> - if (ret == Success)
> - ret = xf86RegisterRootWindowProperty(xf86Screens[i]
> - ->scrnIndex,
> - HasVTAtom, XA_INTEGER,
> - 32, 1, HasVT);
> - if (ret != Success)
> - xf86DrvMsg(xf86Screens[i]->scrnIndex, X_WARNING,
> - "Failed to register VT properties\n");
> - }
> - }
> -
> /* If a screen uses depth 24, show what the pixmap format is */
> for (i = 0; i < xf86NumScreens; i++) {
> if (xf86Screens[i]->depth == 24) {
> @@ -798,6 +778,9 @@ InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
> xf86EnableIO();
> }
>
> + if (xf86Info.vtno >= 0)
> + AddCallback(&RootWindowFinalizeCallback, AddVTAtoms, NULL);
> +
> if (SeatId)
> AddCallback(&RootWindowFinalizeCallback, AddSeatId, SeatId);
>
More information about the xorg-devel
mailing list