From: Emil Velikov <[email protected]>

As per the protocol, the server should not return version greater than
the one supported by the client.

Add a spec quote and tweak the numbers accordingly.

Fixes: 5c5c1b77982 ("present: Add Present extension")
Cc: Thierry Reding <[email protected]>
Cc: Daniel Stone <[email protected]>
Cc: Keith Packard <[email protected]>
Signed-off-by: Emil Velikov <[email protected]>
---
Analogous to the DRI3 patch here
https://patchwork.freedesktop.org/patch/210343/
---
 present/present_request.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/present/present_request.c b/present/present_request.c
index c6afe5fa7..f52efa52b 100644
--- a/present/present_request.c
+++ b/present/present_request.c
@@ -41,7 +41,19 @@ proc_present_query_version(ClientPtr client)
     };
 
     REQUEST_SIZE_MATCH(xPresentQueryVersionReq);
-    (void) stuff;
+    /* From presentproto:
+     *
+     * The client sends the highest supported version to the server
+     * and the server sends the highest version it supports, but no
+     * higher than the requested version.
+     */
+
+    if (rep.majorVersion > stuff->majorVersion ||
+        rep.minorVersion > stuff->minorVersion) {
+        rep.majorVersion = stuff->majorVersion;
+        rep.minorVersion = stuff->minorVersion;
+    }
+
     if (client->swapped) {
         swaps(&rep.sequenceNumber);
         swapl(&rep.length);
-- 
2.16.0

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to