xserver: Branch 'master' - 4 commits
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Feb 7 00:01:47 UTC 2025
Xext/saver.c | 101 ++++++++++++++++++++++++++++-------------------------------
1 file changed, 49 insertions(+), 52 deletions(-)
New commits:
commit 37dd2897d424bf0e9862db315fd716f12f634cc1
Author: Enrico Weigelt, metux IT consult <info at metux.net>
Date: Wed Jul 3 00:17:11 2024 +0200
Xext: saver: consolidate (non-)xinerama versions
We can make it a bit simpler by doing the request header
checking only once.
Signed-off-by: Enrico Weigelt, metux IT consult <info at metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591>
diff --git a/Xext/saver.c b/Xext/saver.c
index 0a0b22c39..ad39a57aa 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -703,9 +703,8 @@ ProcScreenSaverSelectInput(ClientPtr client)
}
static int
-ScreenSaverSetAttributes(ClientPtr client)
+ScreenSaverSetAttributes(ClientPtr client, xScreenSaverSetAttributesReq *stuff)
{
- REQUEST(xScreenSaverSetAttributesReq);
DrawablePtr pDraw;
WindowPtr pParent;
ScreenPtr pScreen;
@@ -728,7 +727,6 @@ ScreenSaverSetAttributes(ClientPtr client)
Colormap cmap;
ColormapPtr pCmap;
- REQUEST_AT_LEAST_SIZE(xScreenSaverSetAttributesReq);
ret = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
DixGetAttrAccess);
if (ret != Success)
@@ -1045,16 +1043,13 @@ ScreenSaverSetAttributes(ClientPtr client)
}
static int
-ScreenSaverUnsetAttributes(ClientPtr client)
+ScreenSaverUnsetAttributes(ClientPtr client, Drawable drawable)
{
- REQUEST(xScreenSaverSetAttributesReq);
DrawablePtr pDraw;
ScreenSaverScreenPrivatePtr pPriv;
int rc;
- REQUEST_SIZE_MATCH(xScreenSaverUnsetAttributesReq);
- rc = dixLookupDrawable(&pDraw, stuff->drawable, client, 0,
- DixGetAttrAccess);
+ rc = dixLookupDrawable(&pDraw, drawable, client, 0, DixGetAttrAccess);
if (rc != Success)
return rc;
pPriv = GetScreenPrivate(pDraw->pScreen);
@@ -1070,9 +1065,11 @@ ScreenSaverUnsetAttributes(ClientPtr client)
static int
ProcScreenSaverSetAttributes(ClientPtr client)
{
+ REQUEST(xScreenSaverSetAttributesReq);
+ REQUEST_AT_LEAST_SIZE(xScreenSaverSetAttributesReq);
+
#ifdef XINERAMA
if (!noPanoramiXExtension) {
- REQUEST(xScreenSaverSetAttributesReq);
PanoramiXRes *draw;
PanoramiXRes *backPix = NULL;
PanoramiXRes *bordPix = NULL;
@@ -1081,8 +1078,6 @@ ProcScreenSaverSetAttributes(ClientPtr client)
int pback_offset = 0, pbord_offset = 0, cmap_offset = 0;
XID orig_visual, tmp;
- REQUEST_AT_LEAST_SIZE(xScreenSaverSetAttributesReq);
-
status = dixLookupResourceByClass((void **) &draw, stuff->drawable,
XRC_DRAWABLE, client, DixWriteAccess);
if (status != Success)
@@ -1144,26 +1139,27 @@ ProcScreenSaverSetAttributes(ClientPtr client)
if (orig_visual != CopyFromParent)
stuff->visualID = PanoramiXTranslateVisualID(i, orig_visual);
- status = ScreenSaverSetAttributes(client);
+ status = ScreenSaverSetAttributes(client, stuff);
}
return status;
}
#endif /* XINERAMA */
- return ScreenSaverSetAttributes(client);
+ return ScreenSaverSetAttributes(client, stuff);
}
static int
ProcScreenSaverUnsetAttributes(ClientPtr client)
{
+ REQUEST(xScreenSaverUnsetAttributesReq);
+ REQUEST_SIZE_MATCH(xScreenSaverUnsetAttributesReq);
+
#ifdef XINERAMA
if (!noPanoramiXExtension) {
- REQUEST(xScreenSaverUnsetAttributesReq);
PanoramiXRes *draw;
int rc, i;
- REQUEST_SIZE_MATCH(xScreenSaverUnsetAttributesReq);
rc = dixLookupResourceByClass((void **) &draw, stuff->drawable,
XRC_DRAWABLE, client, DixWriteAccess);
@@ -1171,15 +1167,14 @@ ProcScreenSaverUnsetAttributes(ClientPtr client)
return (rc == BadValue) ? BadDrawable : rc;
for (i = PanoramiXNumScreens - 1; i > 0; i--) {
- stuff->drawable = draw->info[i].id;
- ScreenSaverUnsetAttributes(client);
+ ScreenSaverUnsetAttributes(client, draw->info[i].id);
}
stuff->drawable = draw->info[0].id;
}
#endif /* XINERAMA */
- return ScreenSaverUnsetAttributes(client);
+ return ScreenSaverUnsetAttributes(client, stuff->drawable);
}
static int
commit 8236ef3b5613d4243f6809f33f9984d11822a7ca
Author: Enrico Weigelt, metux IT consult <info at metux.net>
Date: Mon Jul 8 12:42:07 2024 +0200
Xext: saver: use explicit switch/case for dispatching
It's more robust / easier understandable programming style to use explicit
switch statements, case'ing on the constants defined in the protocol header,
instead of implicitly via a some opaque call table. It's also done this
way in the other extensions, so making the code a bit more consistent.
Signed-off-by: Enrico Weigelt, metux IT consult <info at metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591>
diff --git a/Xext/saver.c b/Xext/saver.c
index 5bbccb5f1..0a0b22c39 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -1247,21 +1247,26 @@ ProcScreenSaverSuspend(ClientPtr client)
return Success;
}
-static int (*NormalVector[]) (ClientPtr /* client */ ) = {
-ProcScreenSaverQueryVersion,
- ProcScreenSaverQueryInfo,
- ProcScreenSaverSelectInput,
- ProcScreenSaverSetAttributes,
- ProcScreenSaverUnsetAttributes, ProcScreenSaverSuspend,};
-
static int
ProcScreenSaverDispatch(ClientPtr client)
{
REQUEST(xReq);
-
- if (stuff->data < ARRAY_SIZE(NormalVector))
- return (*NormalVector[stuff->data]) (client);
- return BadRequest;
+ switch (stuff->data) {
+ case X_ScreenSaverQueryVersion:
+ return ProcScreenSaverQueryVersion(client);
+ case X_ScreenSaverQueryInfo:
+ return ProcScreenSaverQueryInfo(client);
+ case X_ScreenSaverSelectInput:
+ return ProcScreenSaverSelectInput(client);
+ case X_ScreenSaverSetAttributes:
+ return ProcScreenSaverSetAttributes(client);
+ case X_ScreenSaverUnsetAttributes:
+ return ProcScreenSaverUnsetAttributes(client);
+ case X_ScreenSaverSuspend:
+ return ProcScreenSaverSuspend(client);
+ default:
+ return BadRequest;
+ }
}
static int _X_COLD
@@ -1318,21 +1323,26 @@ SProcScreenSaverSuspend(ClientPtr client)
return ProcScreenSaverSuspend(client);
}
-static int (*SwappedVector[]) (ClientPtr /* client */ ) = {
- ProcScreenSaverQueryVersion,
- SProcScreenSaverQueryInfo,
- SProcScreenSaverSelectInput,
- SProcScreenSaverSetAttributes,
- SProcScreenSaverUnsetAttributes, SProcScreenSaverSuspend,};
-
static int _X_COLD
SProcScreenSaverDispatch(ClientPtr client)
{
REQUEST(xReq);
-
- if (stuff->data < ARRAY_SIZE(NormalVector))
- return (*SwappedVector[stuff->data]) (client);
- return BadRequest;
+ switch (stuff->data) {
+ case X_ScreenSaverQueryVersion:
+ return ProcScreenSaverQueryVersion(client);
+ case X_ScreenSaverQueryInfo:
+ return SProcScreenSaverQueryInfo(client);
+ case X_ScreenSaverSelectInput:
+ return SProcScreenSaverSelectInput(client);
+ case X_ScreenSaverSetAttributes:
+ return SProcScreenSaverSetAttributes(client);
+ case X_ScreenSaverUnsetAttributes:
+ return SProcScreenSaverUnsetAttributes(client);
+ case X_ScreenSaverSuspend:
+ return SProcScreenSaverSuspend(client);
+ default:
+ return BadRequest;
+ }
}
void
commit 40469a9d519ff286ec6ad006c6ae1f07f828072a
Author: Enrico Weigelt, metux IT consult <info at metux.net>
Date: Mon Jul 8 12:06:13 2024 +0200
Xext: saver: skip unneeded zero init and zero-swapping
When using struct initializers, all fields not set explicitly are zero.
Also no need to swap fields that are known to be zero.
Signed-off-by: Enrico Weigelt, metux IT consult <info at metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591>
diff --git a/Xext/saver.c b/Xext/saver.c
index cc637aad2..5bbccb5f1 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -601,7 +601,6 @@ ProcScreenSaverQueryVersion(ClientPtr client)
xScreenSaverQueryVersionReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
- .length = 0,
.majorVersion = SERVER_SAVER_MAJOR_VERSION,
.minorVersion = SERVER_SAVER_MINOR_VERSION
};
@@ -610,7 +609,6 @@ ProcScreenSaverQueryVersion(ClientPtr client)
if (client->swapped) {
swaps(&rep.sequenceNumber);
- swapl(&rep.length);
swaps(&rep.majorVersion);
swaps(&rep.minorVersion);
}
@@ -622,7 +620,6 @@ static int
ProcScreenSaverQueryInfo(ClientPtr client)
{
REQUEST(xScreenSaverQueryInfoReq);
- xScreenSaverQueryInfoReply rep;
int rc;
ScreenSaverStuffPtr pSaver;
DrawablePtr pDraw;
@@ -644,30 +641,24 @@ ProcScreenSaverQueryInfo(ClientPtr client)
UpdateCurrentTime();
lastInput = GetTimeInMillis() - LastEventTime(XIAllDevices).milliseconds;
- rep = (xScreenSaverQueryInfoReply) {
+ xScreenSaverQueryInfoReply rep = {
.type = X_Reply,
.sequenceNumber = client->sequence,
- .length = 0,
.window = pSaver->wid
};
if (screenIsSaved != SCREEN_SAVER_OFF) {
rep.state = ScreenSaverOn;
if (ScreenSaverTime)
rep.tilOrSince = lastInput - ScreenSaverTime;
- else
- rep.tilOrSince = 0;
}
else {
if (ScreenSaverTime) {
rep.state = ScreenSaverOff;
- if (ScreenSaverTime < lastInput)
- rep.tilOrSince = 0;
- else
+ if (ScreenSaverTime >= lastInput)
rep.tilOrSince = ScreenSaverTime - lastInput;
}
else {
rep.state = ScreenSaverDisabled;
- rep.tilOrSince = 0;
}
}
rep.idle = lastInput;
@@ -680,7 +671,6 @@ ProcScreenSaverQueryInfo(ClientPtr client)
rep.kind = ScreenSaverInternal;
if (client->swapped) {
swaps(&rep.sequenceNumber);
- swapl(&rep.length);
swapl(&rep.window);
swapl(&rep.tilOrSince);
swapl(&rep.idle);
commit fdb8c8ea41e77feb66c2ba0f55efc9e3c11cd1ba
Author: Enrico Weigelt, metux IT consult <info at metux.net>
Date: Tue Jul 2 21:40:10 2024 +0200
Xext: saver: fix missing swap in QueryVersion reply
The `majorVersion` and `minorVersion` fields are CARD16, thus need to be swapped.
OTOH, the lengths field is zero anyways, so no need to swap it.
Signed-off-by: Enrico Weigelt, metux IT consult <info at metux.net>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1591>
diff --git a/Xext/saver.c b/Xext/saver.c
index edb5102c3..cc637aad2 100644
--- a/Xext/saver.c
+++ b/Xext/saver.c
@@ -611,6 +611,8 @@ ProcScreenSaverQueryVersion(ClientPtr client)
if (client->swapped) {
swaps(&rep.sequenceNumber);
swapl(&rep.length);
+ swaps(&rep.majorVersion);
+ swaps(&rep.minorVersion);
}
WriteToClient(client, sizeof(xScreenSaverQueryVersionReply), &rep);
return Success;
More information about the xorg-commit
mailing list