aboutsummaryrefslogtreecommitdiff
path: root/nx-X11/programs/Xserver
diff options
context:
space:
mode:
authorUlrich Sibiller <uli42@gmx.de>2017-08-10 00:50:27 +0200
committerUlrich Sibiller <uli42@gmx.de>2017-08-10 23:48:09 +0200
commit715fcfe6dfc2be12eb6673d2a5e5672af18f9291 (patch)
tree6bfdeb4cf99ec22f0a6fe60ff7a9e9a792105156 /nx-X11/programs/Xserver
parent8235925a2c3599a8980ce789e0a79369118727fe (diff)
downloadnx-libs-715fcfe6dfc2be12eb6673d2a5e5672af18f9291.tar.gz
nx-libs-715fcfe6dfc2be12eb6673d2a5e5672af18f9291.tar.bz2
nx-libs-715fcfe6dfc2be12eb6673d2a5e5672af18f9291.zip
Set NX_AGENT_VERSION property for root window
Fixes ArcticaProject/nx-libs#500
Diffstat (limited to 'nx-X11/programs/Xserver')
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXproperty.c9
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/NXwindow.c4
-rw-r--r--nx-X11/programs/Xserver/hw/nxagent/Window.c16
3 files changed, 29 insertions, 0 deletions
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c
index ee77eb64e..882dbe61b 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c
@@ -169,6 +169,15 @@ ProcChangeProperty(ClientPtr client)
}
#endif
+#ifdef NXAGENT_SERVER
+ /* prevent clients from changing the NX_AGENT_VERSION property */
+ {
+ Atom prop = MakeAtom("NX_AGENT_VERSION", strlen("NX_AGENT_VERSION"), True);
+ if (stuff->property == prop)
+ return client->noClientException;
+ }
+#endif
+
err = ChangeWindowProperty(pWin, stuff->property, stuff->type, (int)format,
(int)mode, len, (void *)&stuff[1], TRUE);
if (err != Success)
diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c
index 7de25ca28..44d398304 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/NXwindow.c
@@ -134,6 +134,8 @@ extern Bool nxagentScreenTrap;
WindowPtr nxagentRootTileWindow;
+extern void nxagentSetVersionProperty(WindowPtr pWin);
+
void nxagentClearSplash(WindowPtr pW)
{
ScreenPtr pScreen;
@@ -293,6 +295,8 @@ InitRootWindow(WindowPtr pWin)
nxagentPropagateArtsdProperties(pScreen, artsd_port);
}
#endif
+
+ nxagentSetVersionProperty(pWin);
}
/*****
diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c
index 4cefd3f16..9afef8a0c 100644
--- a/nx-X11/programs/Xserver/hw/nxagent/Window.c
+++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c
@@ -532,6 +532,22 @@ FIXME: Do all the windows for which nxagentWindowTopLevel(pWin)
return True;
}
+/* set the NX_AGENT_VERSION property for the given window (normally
+ the root window) */
+void nxagentSetVersionProperty(WindowPtr pWin)
+{
+ char *name = "NX_AGENT_VERSION";
+
+ Atom prop = MakeAtom(name, strlen(name), True);
+
+ if (ChangeWindowProperty(pWin, prop, XA_STRING, 8, PropModeReplace, strlen(NX_VERSION_CURRENT_STRING), NX_VERSION_CURRENT_STRING, True) != Success)
+ fprintf(stderr, "%s: Adding propery [%s], value [%s] failed.\n", __func__, name, NX_VERSION_CURRENT_STRING);
+#ifdef DEBUG
+ else
+ fprintf(stderr, "%s: Added property [%s], value [%s] for root window [%x].\n", __func__, name, NX_VERSION_CURRENT_STRING, pWin);
+#endif
+}
+
Bool nxagentSomeWindowsAreMapped()
{
WindowPtr pWin = screenInfo.screens[0]->root -> firstChild;