From 57e662b83d31344b331d5035d02f7ab26a9eeaad Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 30 Jan 2021 16:10:08 +0100 Subject: nxagent: drop unused nxagentVisibility variables --- nx-X11/programs/Xserver/hw/nxagent/Events.c | 2 -- nx-X11/programs/Xserver/hw/nxagent/Window.c | 2 -- nx-X11/programs/Xserver/hw/nxagent/Windows.h | 2 -- 3 files changed, 6 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Events.c b/nx-X11/programs/Xserver/hw/nxagent/Events.c index 8e2313eac..a342cdee1 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Events.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Events.c @@ -2067,8 +2067,6 @@ FIXME: Don't enqueue the KeyRelease event if the key was not already if (nxagentOption(Fullscreen)) { nxagentVisibility = VisibilityUnobscured; - nxagentVisibilityStop = False; - nxagentVisibilityTimeout = GetTimeInMillis() + 2000; } /* diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index d95f8f3ed..adf54b717 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -80,8 +80,6 @@ int nxagentWindowPrivateIndex; */ int nxagentVisibility = VisibilityUnobscured; -unsigned long nxagentVisibilityTimeout = 0; -Bool nxagentVisibilityStop = False; ConfiguredWindowStruct *nxagentConfiguredWindowList; StaticResizedWindowStruct *nxagentStaticResizedWindowList; diff --git a/nx-X11/programs/Xserver/hw/nxagent/Windows.h b/nx-X11/programs/Xserver/hw/nxagent/Windows.h index 8666ebec9..df27d4e53 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Windows.h +++ b/nx-X11/programs/Xserver/hw/nxagent/Windows.h @@ -256,8 +256,6 @@ void nxagentConfigureWindow(WindowPtr pWin, unsigned int mask); */ extern int nxagentVisibility; -extern unsigned long nxagentVisibilityTimeout; -extern Bool nxagentVisibilityStop; /* * Return the pointer to the window given the remote id. It tries to -- cgit v1.2.3 From ee60cc50cb3c9fb3844fb5b6bd330f636213ee7d Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 30 Jan 2021 16:10:14 +0100 Subject: Window.c: Fix 32bit code path make it compile again Thanks to Simon Matter for reporting this and the patch. Fixes ArcticaProject/nx-libs#993 --- nx-X11/programs/Xserver/hw/nxagent/Window.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index adf54b717..ba93c96cb 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -3089,8 +3089,8 @@ static void nxagentReconnectWindow(void * param0, XID param1, void * data_buffer /* FIXME: use XAllocSizeHints() */ #ifdef _XSERVER64 data64 = (unsigned char *) malloc(sizeof(XSizeHints) + 4); - if (data64) - { + if (data64) + { for (int i = 0; i < 4; i++) { *(data64 + i) = *(data + i); @@ -3104,18 +3104,18 @@ static void nxagentReconnectWindow(void * param0, XID param1, void * data_buffer } XSizeHints *props = (XSizeHints *) data64; - #else - XSizeHints *props = (XSizeHints *) data; - #endif /* _XSERVER64 */ - hints = *props; - } - else - { + } + else + { #ifdef WARNING fprintf(stderr, "%s: Failed to alloc memory for XSizeHints\n", __func__); #endif - } + } + #else + XSizeHints *props = (XSizeHints *) data; + hints = *props; + #endif /* _XSERVER64 */ } else { -- cgit v1.2.3 From 5a00da5eca15ce16401dbdfc6595949beb8a3e76 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 30 Jan 2021 16:10:17 +0100 Subject: NXproperty.c: clean returns remove unneccessary parentheses --- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c index 97665d22e..3ca79cea7 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c @@ -482,14 +482,14 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, #ifdef DEBUG fprintf(stderr, "%s: invalid atom [%d]\n", __func__, property); #endif - return(BadAtom); + return BadAtom; } if ((type != AnyPropertyType) && !ValidAtom(type)) { #ifdef DEBUG fprintf(stderr, "%s: invalid type [%d]\n", __func__, type); #endif - return(BadAtom); + return BadAtom; } pProp = wUserProps (pWin); @@ -508,7 +508,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, #ifdef DEBUG fprintf(stderr, "%s: property not found [%d]\n", __func__, property); #endif - return (BadAtom); + return BadAtom; } /* If the request type and actual type don't match. Return the @@ -577,7 +577,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, free(pProp->data); free(pProp); } - return(Success); + return Success; } #endif -- cgit v1.2.3 From 8b2b4111384133491a11bb67a7272532b582a814 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 30 Jan 2021 16:10:19 +0100 Subject: NXproperty.c: simplify and reformat GetWindowProperty() --- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c index 3ca79cea7..9e14a3cca 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c @@ -466,9 +466,6 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, unsigned long *bytesAfter; unsigned char **propData; { - PropertyPtr pProp, prevProp; - unsigned long n, len, ind; - if (!pWin) { #ifdef DEBUG @@ -484,6 +481,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, #endif return BadAtom; } + if ((type != AnyPropertyType) && !ValidAtom(type)) { #ifdef DEBUG @@ -492,8 +490,8 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, return BadAtom; } - pProp = wUserProps (pWin); - prevProp = (PropertyPtr)NULL; + PropertyPtr pProp = wUserProps (pWin); + PropertyPtr prevProp = (PropertyPtr)NULL; while (pProp) { @@ -522,14 +520,14 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, *format = pProp->format; *nItems = 0; *actualType = pProp->type; - return(Success); + return Success; } /* * Return type, format, value to client */ - n = (pProp->format/8) * pProp->size; /* size (bytes) of prop */ - ind = longOffset << 2; + unsigned long n = (pProp->format/8) * pProp->size; /* size (bytes) of prop */ + unsigned long ind = longOffset << 2; /* If longOffset is invalid such that it causes "len" to be negative, it's a value error. */ @@ -542,7 +540,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, return BadValue; } - len = min(n - ind, 4 * longLength); + unsigned long len = min(n - ind, 4 * longLength); *bytesAfter = n - (ind + len); *format = pProp->format; @@ -566,7 +564,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, } if (delete && (*bytesAfter == 0)) - { /* delete the Property */ + { /* delete the property */ if (prevProp == (PropertyPtr)NULL) /* takes care of head */ { if (!(pWin->optional->userProps = pProp->next)) -- cgit v1.2.3 From b8b1edb2b3507386de9c9fbe6f7b0f0347a22001 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 30 Jan 2021 16:10:21 +0100 Subject: NXproperty.c: GetWindowProperty(): add more comments, restruct prototype --- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 35 +++++++++++-------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c index 9e14a3cca..f4979ceb3 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c @@ -446,25 +446,20 @@ ProcGetProperty(ClientPtr client) return(client->noClientException); } -#ifdef NXAGENT_CLIPBOARD -/* GetWindowProperty clipboard use only */ -/* FIXME: that's wrong, it is also called in Window.c and Events.c */ -/* FIXME: should be moved to a different file, is not derived from - dix */ +/* + * GetWindowProperty is the internal implementation of the + * XGetWindowProperty() Xlib call. It is called from + * Clipboard.c, Window.c and Events.c + * + * FIXME: should be moved to a different file, is not derived from + * dix + */ int -GetWindowProperty(pWin, property, longOffset, longLength, delete, - type, actualType, format, nItems, bytesAfter, propData ) - WindowPtr pWin; - Atom property; - long longOffset; - long longLength; - Bool delete; - Atom type; - Atom *actualType; - int *format; - unsigned long *nItems; - unsigned long *bytesAfter; - unsigned char **propData; +GetWindowProperty(WindowPtr pWin, Atom property, long longOffset, + long longLength, Bool delete, Atom type, + Atom *actualType, int *format, unsigned + long *nItems, unsigned long *bytesAfter, + unsigned char **propData) { if (!pWin) { @@ -527,7 +522,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, * Return type, format, value to client */ unsigned long n = (pProp->format/8) * pProp->size; /* size (bytes) of prop */ - unsigned long ind = longOffset << 2; + unsigned long ind = longOffset << 2; /* byte offset */ /* If longOffset is invalid such that it causes "len" to be negative, it's a value error. */ @@ -540,6 +535,7 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, return BadValue; } + /* minimum of prop size and requested size */ unsigned long len = min(n - ind, 4 * longLength); *bytesAfter = n - (ind + len); @@ -577,7 +573,6 @@ GetWindowProperty(pWin, property, longOffset, longLength, delete, } return Success; } -#endif int ProcDeleteProperty(register ClientPtr client) -- cgit v1.2.3 From d627e948f558f4210feb54c674e7c112b1d6a2e7 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sat, 30 Jan 2021 16:10:23 +0100 Subject: NXproperty.c, dix.c: simplify ProcDeleteProperty() by calling the dix version after a check --- nx-X11/programs/Xserver/dix/property.c | 6 ++-- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 48 +++---------------------- 2 files changed, 9 insertions(+), 45 deletions(-) diff --git a/nx-X11/programs/Xserver/dix/property.c b/nx-X11/programs/Xserver/dix/property.c index f0bfe1e65..37af8d592 100644 --- a/nx-X11/programs/Xserver/dix/property.c +++ b/nx-X11/programs/Xserver/dix/property.c @@ -661,9 +661,12 @@ ProcListProperties(ClientPtr client) return(client->noClientException); } -#ifndef NXAGENT_SERVER int +#ifdef NXAGENT_SERVER +xorg_ProcDeleteProperty(register ClientPtr client) +#else ProcDeleteProperty(register ClientPtr client) +#endif { WindowPtr pWin; REQUEST(xDeletePropertyReq); @@ -699,4 +702,3 @@ ProcDeleteProperty(register ClientPtr client) else return(result); } -#endif diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c index f4979ceb3..7cf41f241 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c @@ -180,11 +180,8 @@ ProcChangeProperty(ClientPtr client) #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; - } + if (stuff->property == MakeAtom("NX_AGENT_VERSION", strlen("NX_AGENT_VERSION"), True)) + return client->noClientException; #endif err = ChangeWindowProperty(pWin, stuff->property, stuff->type, (int)format, @@ -577,46 +574,11 @@ GetWindowProperty(WindowPtr pWin, Atom property, long longOffset, int ProcDeleteProperty(register ClientPtr client) { - WindowPtr pWin; REQUEST(xDeletePropertyReq); - int result; - REQUEST_SIZE_MATCH(xDeletePropertyReq); - UpdateCurrentTime(); - pWin = (WindowPtr)SecurityLookupWindow(stuff->window, client, - DixWriteAccess); - if (!pWin) - return(BadWindow); - if (!ValidAtom(stuff->property)) - { - client->errorValue = stuff->property; - return (BadAtom); - } - -#ifdef XCSECURITY - switch(SecurityCheckPropertyAccess(client, pWin, stuff->property, - DixDestroyAccess)) - { - case SecurityErrorOperation: - client->errorValue = stuff->property; - return BadAtom;; - case SecurityIgnoreOperation: - return Success; - } -#endif - -#ifdef NXAGENT_SERVER /* prevent clients from deleting the NX_AGENT_VERSION property */ - { - Atom prop = MakeAtom("NX_AGENT_VERSION", strlen("NX_AGENT_VERSION"), True); - if (stuff->property == prop) - return client->noClientException; - } -#endif + if (stuff->property == MakeAtom("NX_AGENT_VERSION", strlen("NX_AGENT_VERSION"), True)) + return client->noClientException; - result = DeleteProperty(pWin, stuff->property); - if (client->noClientException != Success) - return(client->noClientException); - else - return(result); + return xorg_ProcDeleteProperty(client); } -- cgit v1.2.3 From 5121188f08680b49deb6a3cc7362222a1797607c Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Sun, 31 Jan 2021 19:20:25 +0100 Subject: NXproperty.c: reorder functions Make it obvious that GetWindowProperty() and ChangeWindowProperty are not derived from dix. --- nx-X11/programs/Xserver/hw/nxagent/NXproperty.c | 60 +++++++++++++------------ 1 file changed, 31 insertions(+), 29 deletions(-) diff --git a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c index 7cf41f241..8461f4a30 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c +++ b/nx-X11/programs/Xserver/hw/nxagent/NXproperty.c @@ -208,28 +208,6 @@ ProcChangeProperty(ClientPtr client) } } -int -ChangeWindowProperty(WindowPtr pWin, Atom property, Atom type, int format, - int mode, unsigned long len, void * value, - Bool sendevent) -{ - int sizeInBytes = format>>3; - int totalSize = len * sizeInBytes; - int copySize = nxagentOption(CopyBufferSize); - - if (copySize != COPY_UNLIMITED && property == clientCutProperty) - { - if (totalSize > copySize) - { - totalSize = copySize; - totalSize = totalSize - (totalSize % sizeInBytes); - len = totalSize / sizeInBytes; - } - } - - return xorg_ChangeWindowProperty(pWin, property, type, format, mode, len, value, sendevent); -} - /***************** * GetProperty * If type Any is specified, returns the property from the specified @@ -443,6 +421,20 @@ ProcGetProperty(ClientPtr client) return(client->noClientException); } +int +ProcDeleteProperty(register ClientPtr client) +{ + REQUEST(xDeletePropertyReq); + REQUEST_SIZE_MATCH(xDeletePropertyReq); + /* prevent clients from deleting the NX_AGENT_VERSION property */ + if (stuff->property == MakeAtom("NX_AGENT_VERSION", strlen("NX_AGENT_VERSION"), True)) + return client->noClientException; + + return xorg_ProcDeleteProperty(client); +} + +/* ---------------------------------------------------------------------- */ + /* * GetWindowProperty is the internal implementation of the * XGetWindowProperty() Xlib call. It is called from @@ -572,13 +564,23 @@ GetWindowProperty(WindowPtr pWin, Atom property, long longOffset, } int -ProcDeleteProperty(register ClientPtr client) +ChangeWindowProperty(WindowPtr pWin, Atom property, Atom type, int format, + int mode, unsigned long len, void * value, + Bool sendevent) { - REQUEST(xDeletePropertyReq); - REQUEST_SIZE_MATCH(xDeletePropertyReq); - /* prevent clients from deleting the NX_AGENT_VERSION property */ - if (stuff->property == MakeAtom("NX_AGENT_VERSION", strlen("NX_AGENT_VERSION"), True)) - return client->noClientException; + int sizeInBytes = format>>3; + int totalSize = len * sizeInBytes; + int copySize = nxagentOption(CopyBufferSize); - return xorg_ProcDeleteProperty(client); + if (copySize != COPY_UNLIMITED && property == clientCutProperty) + { + if (totalSize > copySize) + { + totalSize = copySize; + totalSize = totalSize - (totalSize % sizeInBytes); + len = totalSize / sizeInBytes; + } + } + + return xorg_ChangeWindowProperty(pWin, property, type, format, mode, len, value, sendevent); } -- cgit v1.2.3 From cbd9875e5ca3169d5aaa995e73ec1f67f29ca743 Mon Sep 17 00:00:00 2001 From: Ulrich Sibiller Date: Wed, 3 Feb 2021 13:38:59 +0100 Subject: Window.c: add another FIXME --- nx-X11/programs/Xserver/hw/nxagent/Window.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/nx-X11/programs/Xserver/hw/nxagent/Window.c b/nx-X11/programs/Xserver/hw/nxagent/Window.c index ba93c96cb..5f12fd48a 100644 --- a/nx-X11/programs/Xserver/hw/nxagent/Window.c +++ b/nx-X11/programs/Xserver/hw/nxagent/Window.c @@ -3087,6 +3087,11 @@ static void nxagentReconnectWindow(void * param0, XID param1, void * data_buffer #endif /* FIXME: use XAllocSizeHints() */ + /* FIXME: all this copying is only done because the first + element of the XSizeHints struct is a long which is of + different size on 32bit vs. 64bit platforms. We should + rewrite this to better readable and probably more robust + code */ #ifdef _XSERVER64 data64 = (unsigned char *) malloc(sizeof(XSizeHints) + 4); if (data64) -- cgit v1.2.3