[PATCH] Set a flag property on the root window when the server VT is not active as some clients need to know this.
Daniel Martin
consume.noise at gmail.com
Thu Mar 20 04:04:14 PDT 2014
On 17 March 2014 12:49, Michael Thayer <michael.thayer at oracle.com> wrote:
> Signed-off-by: Michael Thayer <michael.thayer at oracle.com>
> ---
> hw/xfree86/common/xf86Events.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
> index 06af739..a1b43bb 100644
> --- a/hw/xfree86/common/xf86Events.c
> +++ b/hw/xfree86/common/xf86Events.c
> @@ -56,6 +56,7 @@
> #include <X11/X.h>
> #include <X11/Xpoll.h>
> #include <X11/Xproto.h>
> +#include <X11/Xatom.h>
> #include "misc.h"
> #include "compiler.h"
> #include "xf86.h"
> @@ -103,6 +104,9 @@ Bool VTSwitchEnabled = TRUE; /* Allows run-time disabling for
>
> extern fd_set EnabledDevices;
>
> +/* Name chosen to match the "XFree86_VT" atom. */
> +#define NO_VT_ATOM_NAME "XFree86_NO_VT"
Personally, I don't like negated boolean options. I would prefer a
positive property like "XFree86_VT_active".
> #ifdef XF86PM
> extern void (*xf86OSPMClose) (void);
> #endif
> @@ -431,6 +435,34 @@ xf86EnableInputDeviceForVTSwitch(InputInfoPtr pInfo)
> pInfo->flags &= ~XI86_DEVICE_DISABLED;
> }
>
> +/*
> + * xf86CreateRemoveNoVTProperty --
> + * Set a flag property on the root window when the server VT is not active
> + * as some clients need to know this.
> + */
> +static void
> +xf86CreateRemoveNoVTProperty(Bool create)
> +{
> + Atom property_name;
> + int32_t value = 1;
> + int i;
> +
> + property_name = MakeAtom(NO_VT_ATOM_NAME, sizeof(NO_VT_ATOM_NAME) - 1,
> + TRUE);
> + if (property_name == BAD_RESOURCE)
> + FatalError("Failed to create or retrieve \"NO_VT\" atom\n");
> + for (i = 0; i < xf86NumScreens; i++) {
> + if (create)
> + ChangeWindowProperty(xf86ScrnToScreen(xf86Screens[i])->root,
> + property_name, XA_INTEGER, 32,
> + PropModeReplace, 1, &value, TRUE);
> + else
> + DeleteProperty(serverClient,
> + xf86ScrnToScreen(xf86Screens[i])->root,
> + property_name);
> + }
I think it would be better not to delete the property. Then a client
knows for sure if the server supports it or not, regardless of when
the client gets started.
> +}
> +
> void
> xf86VTLeave(void)
> {
> @@ -490,6 +522,8 @@ xf86VTLeave(void)
> if (xorgHWAccess)
> xf86DisableIO();
>
> + xf86CreateRemoveNoVTProperty(TRUE);
> +
> return;
>
> switch_failed:
> @@ -574,6 +608,8 @@ xf86VTEnter(void)
> xf86platformVTProbe();
> #endif
>
> + xf86CreateRemoveNoVTProperty(FALSE);
> +
> OsReleaseSIGIO();
> }
>
> --
> ORACLE Deutschland B.V. & Co. KG Michael Thayer
> Werkstrasse 24 VirtualBox engineering
> 71384 Weinstadt, Germany mailto:michael.thayer at oracle.com
>
> Hauptverwaltung: Riesstr. 25, D-80992 München
> Registergericht: Amtsgericht München, HRA 95603
> Geschäftsführer: Jürgen Kunz
>
> Komplementärin: ORACLE Deutschland Verwaltung B.V.
> Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
> Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
> Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher
> _______________________________________________
> xorg-devel at lists.x.org: X.Org development
> Archives: http://lists.x.org/archives/xorg-devel
> Info: http://lists.x.org/mailman/listinfo/xorg-devel
More information about the xorg-devel
mailing list