Module Name:    xsrc
Committed By:   mrg
Date:           Wed Feb 26 01:17:33 UTC 2025

Modified Files:
        xsrc/external/mit/xorg-server/dist: configure configure.ac
        xsrc/external/mit/xorg-server/dist/Xext: sync.c
        xsrc/external/mit/xorg-server/dist/Xi: xibarriers.c xichangehierarchy.c
        xsrc/external/mit/xorg-server/dist/dix: devices.c dispatch.c
            enterleave.c
        xsrc/external/mit/xorg-server/dist/hw/xfree86/common: xf86Configure.c
            xf86sbusBus.c
        xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2: dri2.c
        xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting:
            driver.c drmmode_display.c present.c
        xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw: fbdevhw.c
        xsrc/external/mit/xorg-server/dist/include: dix-config.h.in
        xsrc/external/mit/xorg-server/dist/os: WaitFor.c access.c connection.c
        xsrc/external/mit/xorg-server/dist/xkb: xkb.c
        xsrc/external/mit/xorg-server/include: dix-config.h version-config.h
            xorg-config.h xorg-server.h

Log Message:
merge xorg-server 21.1.16.


To generate a diff of this commit:
cvs rdiff -u -r1.20 -r1.21 xsrc/external/mit/xorg-server/dist/configure
cvs rdiff -u -r1.22 -r1.23 xsrc/external/mit/xorg-server/dist/configure.ac
cvs rdiff -u -r1.13 -r1.14 xsrc/external/mit/xorg-server/dist/Xext/sync.c
cvs rdiff -u -r1.4 -r1.5 xsrc/external/mit/xorg-server/dist/Xi/xibarriers.c
cvs rdiff -u -r1.7 -r1.8 \
    xsrc/external/mit/xorg-server/dist/Xi/xichangehierarchy.c
cvs rdiff -u -r1.15 -r1.16 xsrc/external/mit/xorg-server/dist/dix/devices.c
cvs rdiff -u -r1.8 -r1.9 xsrc/external/mit/xorg-server/dist/dix/dispatch.c
cvs rdiff -u -r1.9 -r1.10 xsrc/external/mit/xorg-server/dist/dix/enterleave.c
cvs rdiff -u -r1.12 -r1.13 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Configure.c
cvs rdiff -u -r1.7 -r1.8 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c
cvs rdiff -u -r1.5 -r1.6 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2/dri2.c
cvs rdiff -u -r1.7 -r1.8 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/driver.c
cvs rdiff -u -r1.11 -r1.12 \
    
xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/drmmode_display.c
cvs rdiff -u -r1.8 -r1.9 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/present.c
cvs rdiff -u -r1.5 -r1.6 \
    xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw/fbdevhw.c
cvs rdiff -u -r1.9 -r1.10 \
    xsrc/external/mit/xorg-server/dist/include/dix-config.h.in
cvs rdiff -u -r1.5 -r1.6 xsrc/external/mit/xorg-server/dist/os/WaitFor.c
cvs rdiff -u -r1.7 -r1.8 xsrc/external/mit/xorg-server/dist/os/access.c
cvs rdiff -u -r1.8 -r1.9 xsrc/external/mit/xorg-server/dist/os/connection.c
cvs rdiff -u -r1.10 -r1.11 xsrc/external/mit/xorg-server/dist/xkb/xkb.c
cvs rdiff -u -r1.53 -r1.54 xsrc/external/mit/xorg-server/include/dix-config.h
cvs rdiff -u -r1.23 -r1.24 \
    xsrc/external/mit/xorg-server/include/version-config.h
cvs rdiff -u -r1.33 -r1.34 \
    xsrc/external/mit/xorg-server/include/xorg-config.h \
    xsrc/external/mit/xorg-server/include/xorg-server.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xorg-server/dist/configure
diff -u xsrc/external/mit/xorg-server/dist/configure:1.20 xsrc/external/mit/xorg-server/dist/configure:1.21
--- xsrc/external/mit/xorg-server/dist/configure:1.20	Wed Oct 30 21:16:58 2024
+++ xsrc/external/mit/xorg-server/dist/configure	Wed Feb 26 01:17:31 2025
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.72 for xorg-server 21.1.14.
+# Generated by GNU Autoconf 2.72 for xorg-server 21.1.16.
 #
 # Report bugs to <https://gitlab.freedesktop.org/xorg/xserver/issues>.
 #
@@ -675,8 +675,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='xorg-server'
 PACKAGE_TARNAME='xorg-server'
-PACKAGE_VERSION='21.1.14'
-PACKAGE_STRING='xorg-server 21.1.14'
+PACKAGE_VERSION='21.1.16'
+PACKAGE_STRING='xorg-server 21.1.16'
 PACKAGE_BUGREPORT='https://gitlab.freedesktop.org/xorg/xserver/issues'
 PACKAGE_URL=''
 
@@ -1999,7 +1999,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-'configure' configures xorg-server 21.1.14 to adapt to many kinds of systems.
+'configure' configures xorg-server 21.1.16 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2070,7 +2070,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of xorg-server 21.1.14:";;
+     short | recursive ) echo "Configuration of xorg-server 21.1.16:";;
    esac
   cat <<\_ACEOF
 
@@ -2256,10 +2256,10 @@ Optional Packages:
                           org.x)
   --with-bundle-version=VERSION
                           Version to use for X11.app's CFBundleVersion
-                          (default: 21.1.14)
+                          (default: 21.1.16)
   --with-bundle-version-string=VERSION
                           Version to use for X11.app's
-                          CFBundleShortVersionString (default: 21.1.14)
+                          CFBundleShortVersionString (default: 21.1.16)
   --with-sparkle-feed-url=URL
                           URL for the Sparkle feed (default:
                           https://www.xquartz.org/releases/sparkle/release.xml)
@@ -2269,7 +2269,7 @@ Optional Packages:
   --with-systemd-daemon   support systemd socket activation (default: auto)
   --with-xkb-bin-directory=DIR
                           Directory containing xkbcomp program (default: auto)
-  --with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI
+  --with-sha1=libc|libmd|libnettle|nettlestatic|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI
                           choose SHA1 implementation
 
 Some influential environment variables:
@@ -2476,7 +2476,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-xorg-server configure 21.1.14
+xorg-server configure 21.1.16
 generated by GNU Autoconf 2.72
 
 Copyright (C) 2023 Free Software Foundation, Inc.
@@ -3154,7 +3154,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by xorg-server $as_me 21.1.14, which was
+It was created by xorg-server $as_me 21.1.16, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3929,7 +3929,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLA
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-RELEASE_DATE="2024-10-29"
+RELEASE_DATE="2025-02-25"
 RELEASE_NAME="Caramel Ice Cream"
 
 
@@ -4452,7 +4452,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='xorg-server'
- VERSION='21.1.14'
+ VERSION='21.1.16'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -26036,7 +26036,7 @@ if test ${with_bundle_version+y}
 then :
   withval=$with_bundle_version;  BUNDLE_VERSION="${withval}"
 else case e in #(
-  e)  BUNDLE_VERSION="21.1.14"  ;;
+  e)  BUNDLE_VERSION="21.1.16"  ;;
 esac
 fi
 
@@ -30636,6 +30636,15 @@ printf "%s\n" "#define HAVE_SHA1_IN_LIBN
 
 	SHA1_LIBS=-lnettle
 fi
+if test "x$with_sha1" = xnettlestatic && test "x$HAVE_LIBNETTLE" != xyes; then
+	as_fn_error $? "nettlestatic requested but libnettle not found" "$LINENO" 5
+fi
+if test "x$with_sha1" = xnettlestatic; then
+
+printf "%s\n" "#define HAVE_SHA1_IN_LIBNETTLE 1" >>confdefs.h
+
+	SHA1_LIBS=-l:libnettle.a
+fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for gcry_md_open in -lgcrypt" >&5
 printf %s "checking for gcry_md_open in -lgcrypt... " >&6; }
 if test ${ac_cv_lib_gcrypt_gcry_md_open+y}
@@ -34805,7 +34814,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by xorg-server $as_me 21.1.14, which was
+This file was extended by xorg-server $as_me 21.1.16, which was
 generated by GNU Autoconf 2.72.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -34873,7 +34882,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-xorg-server config.status 21.1.14
+xorg-server config.status 21.1.16
 configured by $0, generated by GNU Autoconf 2.72,
   with options \\"\$ac_cs_config\\"
 

Index: xsrc/external/mit/xorg-server/dist/configure.ac
diff -u xsrc/external/mit/xorg-server/dist/configure.ac:1.22 xsrc/external/mit/xorg-server/dist/configure.ac:1.23
--- xsrc/external/mit/xorg-server/dist/configure.ac:1.22	Wed Oct 30 21:16:58 2024
+++ xsrc/external/mit/xorg-server/dist/configure.ac	Wed Feb 26 01:17:31 2025
@@ -26,8 +26,8 @@ dnl
 dnl Process this file with autoconf to create configure.
 
 AC_PREREQ(2.60)
-AC_INIT([xorg-server], 21.1.14, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
-RELEASE_DATE="2024-10-29"
+AC_INIT([xorg-server], 21.1.16, [https://gitlab.freedesktop.org/xorg/xserver/issues], xorg-server)
+RELEASE_DATE="2025-02-25"
 RELEASE_NAME="Caramel Ice Cream"
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_MACRO_DIR([m4])
@@ -1493,7 +1493,7 @@ CORE_INCS='-I$(top_srcdir)/include -I$(t
 
 # SHA1 hashing
 AC_ARG_WITH([sha1],
-            [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
+            [AS_HELP_STRING([--with-sha1=libc|libmd|libnettle|nettlestatic|libgcrypt|libcrypto|libsha1|CommonCrypto|CryptoAPI],
                             [choose SHA1 implementation])])
 AC_CHECK_FUNC([SHA1Init], [HAVE_SHA1_IN_LIBC=yes])
 if test "x$with_sha1" = x && test "x$HAVE_SHA1_IN_LIBC" = xyes; then
@@ -1568,6 +1568,14 @@ if test "x$with_sha1" = xlibnettle; then
 	          [Use libnettle SHA1 functions])
 	SHA1_LIBS=-lnettle
 fi
+if test "x$with_sha1" = xnettlestatic && test "x$HAVE_LIBNETTLE" != xyes; then
+	AC_MSG_ERROR([nettlestatic requested but libnettle not found])
+fi
+if test "x$with_sha1" = xnettlestatic; then
+	AC_DEFINE([HAVE_SHA1_IN_LIBNETTLE], [1],
+	          [Use static libnettle SHA1 functions])
+	SHA1_LIBS=-l:libnettle.a
+fi
 AC_CHECK_LIB([gcrypt], [gcry_md_open], [HAVE_LIBGCRYPT=yes])
 if test "x$with_sha1" = x && test "x$HAVE_LIBGCRYPT" = xyes; then
 	with_sha1=libgcrypt

Index: xsrc/external/mit/xorg-server/dist/Xext/sync.c
diff -u xsrc/external/mit/xorg-server/dist/Xext/sync.c:1.13 xsrc/external/mit/xorg-server/dist/Xext/sync.c:1.14
--- xsrc/external/mit/xorg-server/dist/Xext/sync.c:1.13	Thu Jul  4 21:47:03 2024
+++ xsrc/external/mit/xorg-server/dist/Xext/sync.c	Wed Feb 26 01:17:31 2025
@@ -199,8 +199,8 @@ SyncAddTriggerToSyncObject(SyncTrigger *
             return Success;
     }
 
-    if (!(pCur = malloc(sizeof(SyncTriggerList))))
-        return BadAlloc;
+    /* Failure is not an option, it's succeed or burst! */
+    pCur = XNFalloc(sizeof(SyncTriggerList));
 
     pCur->pTrigger = pTrigger;
     pCur->next = pTrigger->pSync->pTriglist;
@@ -329,11 +329,6 @@ SyncInitTrigger(ClientPtr client, SyncTr
             client->errorValue = syncObject;
             return rc;
         }
-        if (pSync != pTrigger->pSync) { /* new counter for trigger */
-            SyncDeleteTriggerFromSyncObject(pTrigger);
-            pTrigger->pSync = pSync;
-            newSyncObject = TRUE;
-        }
     }
 
     /* if system counter, ask it what the current value is */
@@ -355,6 +350,24 @@ SyncInitTrigger(ClientPtr client, SyncTr
         }
     }
 
+    if (changes & (XSyncCAValueType | XSyncCAValue)) {
+        if (pTrigger->value_type == XSyncAbsolute)
+            pTrigger->test_value = pTrigger->wait_value;
+        else {                  /* relative */
+            Bool overflow;
+
+            if (pCounter == NULL)
+                return BadMatch;
+
+            overflow = checked_int64_add(&pTrigger->test_value,
+                                         pCounter->value, pTrigger->wait_value);
+            if (overflow) {
+                client->errorValue = pTrigger->wait_value >> 32;
+                return BadValue;
+            }
+        }
+    }
+
     if (changes & XSyncCATestType) {
 
         if (pSync && SYNC_FENCE == pSync->type) {
@@ -383,21 +396,11 @@ SyncInitTrigger(ClientPtr client, SyncTr
         }
     }
 
-    if (changes & (XSyncCAValueType | XSyncCAValue)) {
-        if (pTrigger->value_type == XSyncAbsolute)
-            pTrigger->test_value = pTrigger->wait_value;
-        else {                  /* relative */
-            Bool overflow;
-
-            if (pCounter == NULL)
-                return BadMatch;
-
-            overflow = checked_int64_add(&pTrigger->test_value,
-                                         pCounter->value, pTrigger->wait_value);
-            if (overflow) {
-                client->errorValue = pTrigger->wait_value >> 32;
-                return BadValue;
-            }
+    if (changes & XSyncCACounter) {
+        if (pSync != pTrigger->pSync) { /* new counter for trigger */
+            SyncDeleteTriggerFromSyncObject(pTrigger);
+            pTrigger->pSync = pSync;
+            newSyncObject = TRUE;
         }
     }
 
@@ -405,8 +408,7 @@ SyncInitTrigger(ClientPtr client, SyncTr
      *  a new counter on a trigger
      */
     if (newSyncObject) {
-        if ((rc = SyncAddTriggerToSyncObject(pTrigger)) != Success)
-            return rc;
+        SyncAddTriggerToSyncObject(pTrigger);
     }
     else if (pCounter && IsSystemCounter(pCounter)) {
         SyncComputeBracketValues(pCounter);
@@ -797,8 +799,14 @@ SyncChangeAlarmAttributes(ClientPtr clie
     int status;
     XSyncCounter counter;
     Mask origmask = mask;
-
-    counter = pAlarm->trigger.pSync ? pAlarm->trigger.pSync->id : None;
+    SyncTrigger trigger;
+    Bool select_events_changed = FALSE;
+    Bool select_events_value = FALSE;
+    int64_t delta;
+
+    trigger = pAlarm->trigger;
+    delta = pAlarm->delta;
+    counter = trigger.pSync ? trigger.pSync->id : None;
 
     while (mask) {
         int index2 = lowbit(mask);
@@ -814,24 +822,24 @@ SyncChangeAlarmAttributes(ClientPtr clie
         case XSyncCAValueType:
             mask &= ~XSyncCAValueType;
             /* sanity check in SyncInitTrigger */
-            pAlarm->trigger.value_type = *values++;
+            trigger.value_type = *values++;
             break;
 
         case XSyncCAValue:
             mask &= ~XSyncCAValue;
-            pAlarm->trigger.wait_value = ((int64_t)values[0] << 32) | values[1];
+            trigger.wait_value = ((int64_t)values[0] << 32) | values[1];
             values += 2;
             break;
 
         case XSyncCATestType:
             mask &= ~XSyncCATestType;
             /* sanity check in SyncInitTrigger */
-            pAlarm->trigger.test_type = *values++;
+            trigger.test_type = *values++;
             break;
 
         case XSyncCADelta:
             mask &= ~XSyncCADelta;
-            pAlarm->delta = ((int64_t)values[0] << 32) | values[1];
+            delta = ((int64_t)values[0] << 32) | values[1];
             values += 2;
             break;
 
@@ -841,10 +849,8 @@ SyncChangeAlarmAttributes(ClientPtr clie
                 client->errorValue = *values;
                 return BadValue;
             }
-            status = SyncEventSelectForAlarm(pAlarm, client,
-                                             (Bool) (*values++));
-            if (status != Success)
-                return status;
+            select_events_value = (Bool) (*values++);
+            select_events_changed = TRUE;
             break;
 
         default:
@@ -853,25 +859,33 @@ SyncChangeAlarmAttributes(ClientPtr clie
         }
     }
 
+    if (select_events_changed) {
+        status = SyncEventSelectForAlarm(pAlarm, client, select_events_value);
+        if (status != Success)
+            return status;
+    }
+
     /* "If the test-type is PositiveComparison or PositiveTransition
      *  and delta is less than zero, or if the test-type is
      *  NegativeComparison or NegativeTransition and delta is
      *  greater than zero, a Match error is generated."
      */
     if (origmask & (XSyncCADelta | XSyncCATestType)) {
-        if ((((pAlarm->trigger.test_type == XSyncPositiveComparison) ||
-              (pAlarm->trigger.test_type == XSyncPositiveTransition))
-             && pAlarm->delta < 0)
+        if ((((trigger.test_type == XSyncPositiveComparison) ||
+              (trigger.test_type == XSyncPositiveTransition))
+             && delta < 0)
             ||
-            (((pAlarm->trigger.test_type == XSyncNegativeComparison) ||
-              (pAlarm->trigger.test_type == XSyncNegativeTransition))
-             && pAlarm->delta > 0)
+            (((trigger.test_type == XSyncNegativeComparison) ||
+              (trigger.test_type == XSyncNegativeTransition))
+             && delta > 0)
             ) {
             return BadMatch;
         }
     }
 
     /* postpone this until now, when we're sure nothing else can go wrong */
+    pAlarm->delta = delta;
+    pAlarm->trigger = trigger;
     if ((status = SyncInitTrigger(client, &pAlarm->trigger, counter, RTCounter,
                                   origmask & XSyncCAAllTrigger)) != Success)
         return status;

Index: xsrc/external/mit/xorg-server/dist/Xi/xibarriers.c
diff -u xsrc/external/mit/xorg-server/dist/Xi/xibarriers.c:1.4 xsrc/external/mit/xorg-server/dist/Xi/xibarriers.c:1.5
--- xsrc/external/mit/xorg-server/dist/Xi/xibarriers.c:1.4	Sun Mar  3 22:01:08 2019
+++ xsrc/external/mit/xorg-server/dist/Xi/xibarriers.c	Wed Feb 26 01:17:32 2025
@@ -129,14 +129,15 @@ static void FreePointerBarrierClient(str
 
 static struct PointerBarrierDevice *GetBarrierDevice(struct PointerBarrierClient *c, int deviceid)
 {
-    struct PointerBarrierDevice *pbd = NULL;
+    struct PointerBarrierDevice *p, *pbd = NULL;
 
-    xorg_list_for_each_entry(pbd, &c->per_device, entry) {
-        if (pbd->deviceid == deviceid)
+    xorg_list_for_each_entry(p, &c->per_device, entry) {
+        if (p->deviceid == deviceid) {
+            pbd = p;
             break;
+        }
     }
 
-    BUG_WARN(!pbd);
     return pbd;
 }
 
@@ -337,6 +338,9 @@ barrier_find_nearest(BarrierScreenPtr cs
         double distance;
 
         pbd = GetBarrierDevice(c, dev->id);
+        if (!pbd)
+            continue;
+
         if (pbd->seen)
             continue;
 
@@ -445,6 +449,9 @@ input_constrain_cursor(DeviceIntPtr dev,
         nearest = &c->barrier;
 
         pbd = GetBarrierDevice(c, master->id);
+        if (!pbd)
+            continue;
+
         new_sequence = !pbd->hit;
 
         pbd->seen = TRUE;
@@ -485,6 +492,9 @@ input_constrain_cursor(DeviceIntPtr dev,
         int flags = 0;
 
         pbd = GetBarrierDevice(c, master->id);
+        if (!pbd)
+            continue;
+
         pbd->seen = FALSE;
         if (!pbd->hit)
             continue;
@@ -679,6 +689,9 @@ BarrierFreeBarrier(void *data, XID id)
             continue;
 
         pbd = GetBarrierDevice(c, dev->id);
+        if (!pbd)
+            continue;
+
         if (!pbd->hit)
             continue;
 
@@ -738,6 +751,8 @@ static void remove_master_func(void *res
     barrier = container_of(b, struct PointerBarrierClient, barrier);
 
     pbd = GetBarrierDevice(barrier, *deviceid);
+    if (!pbd)
+        return;
 
     if (pbd->hit) {
         BarrierEvent ev = {
@@ -903,6 +918,10 @@ ProcXIBarrierReleasePointer(ClientPtr cl
         barrier = container_of(b, struct PointerBarrierClient, barrier);
 
         pbd = GetBarrierDevice(barrier, dev->id);
+        if (!pbd) {
+            client->errorValue = dev->id;
+            return BadDevice;
+        }
 
         if (pbd->barrier_event_id == event_id)
             pbd->release_event_id = event_id;

Index: xsrc/external/mit/xorg-server/dist/Xi/xichangehierarchy.c
diff -u xsrc/external/mit/xorg-server/dist/Xi/xichangehierarchy.c:1.7 xsrc/external/mit/xorg-server/dist/Xi/xichangehierarchy.c:1.8
--- xsrc/external/mit/xorg-server/dist/Xi/xichangehierarchy.c:1.7	Thu Jul  4 21:47:03 2024
+++ xsrc/external/mit/xorg-server/dist/Xi/xichangehierarchy.c	Wed Feb 26 01:17:32 2025
@@ -46,6 +46,7 @@
 #include "exevents.h"
 #include "exglobals.h"
 #include "geext.h"
+#include "misc.h"
 #include "xace.h"
 #include "xiquerydevice.h"      /* for GetDeviceUse */
 
@@ -215,46 +216,68 @@ disable_clientpointer(DeviceIntPtr dev)
     }
 }
 
+static DeviceIntPtr
+find_disabled_master(int type)
+{
+    DeviceIntPtr dev;
+
+    /* Once a master device is disabled it loses the pairing, so returning the first
+     * match is good enough */
+    for (dev = inputInfo.off_devices; dev; dev = dev->next) {
+        if (dev->type == type)
+            return dev;
+    }
+
+    return NULL;
+}
+
 static int
 remove_master(ClientPtr client, xXIRemoveMasterInfo * r, int flags[MAXDEVICES])
 {
-    DeviceIntPtr ptr, keybd, XTestptr, XTestkeybd;
+    DeviceIntPtr dev, ptr, keybd, XTestptr, XTestkeybd;
     int rc = Success;
 
     if (r->return_mode != XIAttachToMaster && r->return_mode != XIFloating)
         return BadValue;
 
-    rc = dixLookupDevice(&ptr, r->deviceid, client, DixDestroyAccess);
+    rc = dixLookupDevice(&dev, r->deviceid, client, DixDestroyAccess);
     if (rc != Success)
         goto unwind;
 
-    if (!IsMaster(ptr)) {
+    if (!IsMaster(dev)) {
         client->errorValue = r->deviceid;
         rc = BadDevice;
         goto unwind;
     }
 
     /* XXX: For now, don't allow removal of VCP, VCK */
-    if (ptr == inputInfo.pointer ||ptr == inputInfo.keyboard) {
+    if (dev == inputInfo.pointer || dev == inputInfo.keyboard) {
         rc = BadDevice;
         goto unwind;
     }
 
-    ptr = GetMaster(ptr, MASTER_POINTER);
+    if ((ptr = GetMaster(dev, MASTER_POINTER)) == NULL)
+        ptr = find_disabled_master(MASTER_POINTER);
+    BUG_RETURN_VAL(ptr == NULL, BadDevice);
     rc = dixLookupDevice(&ptr, ptr->id, client, DixDestroyAccess);
     if (rc != Success)
         goto unwind;
-    keybd = GetMaster(ptr, MASTER_KEYBOARD);
+
+    if ((keybd = GetMaster(dev, MASTER_KEYBOARD)) == NULL)
+        keybd = find_disabled_master(MASTER_KEYBOARD);
+    BUG_RETURN_VAL(keybd == NULL, BadDevice);
     rc = dixLookupDevice(&keybd, keybd->id, client, DixDestroyAccess);
     if (rc != Success)
         goto unwind;
 
     XTestptr = GetXTestDevice(ptr);
+    BUG_RETURN_VAL(XTestptr == NULL, BadDevice);
     rc = dixLookupDevice(&XTestptr, XTestptr->id, client, DixDestroyAccess);
     if (rc != Success)
         goto unwind;
 
     XTestkeybd = GetXTestDevice(keybd);
+    BUG_RETURN_VAL(XTestkeybd == NULL, BadDevice);
     rc = dixLookupDevice(&XTestkeybd, XTestkeybd->id, client, DixDestroyAccess);
     if (rc != Success)
         goto unwind;

Index: xsrc/external/mit/xorg-server/dist/dix/devices.c
diff -u xsrc/external/mit/xorg-server/dist/dix/devices.c:1.15 xsrc/external/mit/xorg-server/dist/dix/devices.c:1.16
--- xsrc/external/mit/xorg-server/dist/dix/devices.c:1.15	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/dist/dix/devices.c	Wed Feb 26 01:17:32 2025
@@ -963,6 +963,23 @@ FreeAllDeviceClasses(ClassesPtr classes)
 
 }
 
+static void
+FreePendingFrozenDeviceEvents(DeviceIntPtr dev)
+{
+    QdEventPtr qe, tmp;
+
+    if (!dev->deviceGrab.sync.frozen)
+        return;
+
+    /* Dequeue any frozen pending events */
+    xorg_list_for_each_entry_safe(qe, tmp, &syncEvents.pending, next) {
+        if (qe->device == dev) {
+            xorg_list_del(&qe->next);
+            free(qe);
+        }
+    }
+}
+
 /**
  * Close down a device and free all resources.
  * Once closed down, the driver will probably not expect you that you'll ever
@@ -1027,6 +1044,7 @@ CloseDevice(DeviceIntPtr dev)
         free(dev->last.touches[j].valuators);
     free(dev->last.touches);
     dev->config_info = NULL;
+    FreePendingFrozenDeviceEvents(dev);
     dixFreePrivates(dev->devPrivates, PRIVATE_DEVICE);
     free(dev);
 }
@@ -2686,11 +2704,14 @@ AttachDevice(ClientPtr client, DeviceInt
         dev->spriteInfo->paired = dev;
     }
     else {
+        DeviceIntPtr keyboard = GetMaster(dev, MASTER_KEYBOARD);
+
         dev->spriteInfo->sprite = master->spriteInfo->sprite;
         dev->spriteInfo->paired = master;
         dev->spriteInfo->spriteOwner = FALSE;
 
-        XkbPushLockedStateToSlaves(GetMaster(dev, MASTER_KEYBOARD), 0, 0);
+        if (keyboard)
+            XkbPushLockedStateToSlaves(keyboard, 0, 0);
         RecalculateMasterButtons(master);
     }
 

Index: xsrc/external/mit/xorg-server/dist/dix/dispatch.c
diff -u xsrc/external/mit/xorg-server/dist/dix/dispatch.c:1.8 xsrc/external/mit/xorg-server/dist/dix/dispatch.c:1.9
--- xsrc/external/mit/xorg-server/dist/dix/dispatch.c:1.8	Thu Jul  4 21:47:03 2024
+++ xsrc/external/mit/xorg-server/dist/dix/dispatch.c	Wed Feb 26 01:17:32 2025
@@ -3107,6 +3107,10 @@ ProcFreeCursor(ClientPtr client)
     rc = dixLookupResourceByType((void **) &pCursor, stuff->id, RT_CURSOR,
                                  client, DixDestroyAccess);
     if (rc == Success) {
+        if (pCursor == rootCursor) {
+            client->errorValue = stuff->id;
+            return BadCursor;
+        }
         FreeResource(stuff->id, RT_NONE);
         return Success;
     }

Index: xsrc/external/mit/xorg-server/dist/dix/enterleave.c
diff -u xsrc/external/mit/xorg-server/dist/dix/enterleave.c:1.9 xsrc/external/mit/xorg-server/dist/dix/enterleave.c:1.10
--- xsrc/external/mit/xorg-server/dist/dix/enterleave.c:1.9	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/dist/dix/enterleave.c	Wed Feb 26 01:17:32 2025
@@ -738,7 +738,7 @@ DeliverStateNotifyEvent(DeviceIntPtr dev
         (ev - 1)->deviceid |= MORE_EVENTS;
         bev->type = DeviceButtonStateNotify;
         bev->deviceid = dev->id;
-        memcpy((char *) &bev->buttons[4], (char *) &b->down[4],
+        memcpy((char *) &bev->buttons[0], (char *) &b->down[4],
                DOWN_LENGTH - 4);
     }
 

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Configure.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Configure.c:1.12 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Configure.c:1.13
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Configure.c:1.12	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86Configure.c	Wed Feb 26 01:17:32 2025
@@ -324,8 +324,10 @@ configureDeviceSection(int screennum)
                 len += strlen(opttype);
 
                 ptr->dev_comment = realloc(ptr->dev_comment, len);
-                if (!ptr->dev_comment)
+                if (!ptr->dev_comment) {
+                    free(optname);
                     break;
+                }
                 p_e = ptr->dev_comment + strlen(ptr->dev_comment);
                 sprintf(p_e, "%s%-20s%s%s%s", prefix, optname, middle,
                         opttype, suffix);

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c:1.7 xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c:1.8
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c:1.7	Sat Aug 20 21:15:06 2016
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/common/xf86sbusBus.c	Wed Feb 26 01:17:32 2025
@@ -244,7 +244,7 @@ xf86SbusProbe(void)
  * in the correct format for a SBUS bus id.
  */
 
-Bool
+static Bool
 xf86ParseSbusBusString(const char *busID, int *fbNum)
 {
     /*
@@ -316,7 +316,7 @@ xf86ParseSbusBusString(const char *busID
  * Compare a BUS ID string with a SBUS bus id.  Return TRUE if they match.
  */
 
-Bool
+static Bool
 xf86CompareSbusBusString(const char *busID, int fbNum)
 {
     int iFbNum;
@@ -333,7 +333,7 @@ xf86CompareSbusBusString(const char *bus
  * Check if the slot requested is free.  If it is already in use, return FALSE.
  */
 
-Bool
+static Bool
 xf86CheckSbusSlot(int fbNum)
 {
     int i;
@@ -354,7 +354,7 @@ xf86CheckSbusSlot(int fbNum)
  * Otherwise, claim the slot for the screen requesting it.
  */
 
-int
+static int
 xf86ClaimSbusSlot(sbusDevicePtr psdp, DriverPtr drvp, GDevPtr dev, Bool active)
 {
     EntityPtr p = NULL;
@@ -752,6 +752,7 @@ void
 xf86SbusConfigureNewDev(void *busData, sbusDevicePtr sBus, GDevRec * GDev)
 {
     char *promPath = NULL;
+    char *tmp;
 
     sBus = (sbusDevicePtr) busData;
     GDev->identifier = sBus->descr;
@@ -760,10 +761,11 @@ xf86SbusConfigureNewDev(void *busData, s
         sparcPromClose();
     }
     if (promPath) {
-        XNFasprintf(&GDev->busID, "SBUS:%s", promPath);
+        XNFasprintf(&tmp, "SBUS:%s", promPath);
         free(promPath);
     }
     else {
-        XNFasprintf(&GDev->busID, "SBUS:fb%d", sBus->fbNum);
+        XNFasprintf(&tmp, "SBUS:fb%d", sBus->fbNum);
     }
+    GDev->busID = tmp;
 }

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2/dri2.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2/dri2.c:1.5 xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2/dri2.c:1.6
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2/dri2.c:1.5	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/dri2/dri2.c	Wed Feb 26 01:17:32 2025
@@ -356,10 +356,15 @@ DRI2CreateDrawable2(ClientPtr client, Dr
                     XID *dri2_id_out)
 {
     DRI2DrawablePtr pPriv;
-    DRI2ClientPtr dri2_client = dri2ClientPrivate(client);
+    DRI2ClientPtr dri2_client;
     XID dri2_id;
     int rc;
 
+    if (!dixPrivateKeyRegistered(dri2ScreenPrivateKey))
+        return BadValue;
+
+    dri2_client = dri2ClientPrivate(client);
+
     pPriv = DRI2GetDrawable(pDraw);
     if (pPriv == NULL)
         pPriv = DRI2AllocateDrawable(pDraw);
@@ -1362,9 +1367,14 @@ Bool
 DRI2Authenticate(ClientPtr client, ScreenPtr pScreen, uint32_t magic)
 {
     DRI2ScreenPtr ds;
-    DRI2ClientPtr dri2_client = dri2ClientPrivate(client);
+    DRI2ClientPtr dri2_client;
     ScreenPtr primescreen;
 
+    if (!dixPrivateKeyRegistered(dri2ScreenPrivateKey))
+        return FALSE;
+
+    dri2_client = dri2ClientPrivate(client);
+
     ds = DRI2GetScreenPrime(pScreen, dri2_client->prime_id);
     if (ds == NULL)
         return FALSE;

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/driver.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/driver.c:1.7 xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/driver.c:1.8
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/driver.c:1.7	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/driver.c	Wed Feb 26 01:17:32 2025
@@ -515,9 +515,41 @@ GetRec(ScrnInfoPtr pScrn)
     return TRUE;
 }
 
+static void
+rotate_clip(PixmapPtr pixmap, BoxPtr rect, drmModeClip *clip, Rotation rotation)
+{
+    int w = pixmap->drawable.width;
+    int h = pixmap->drawable.height;
+
+    if (rotation == RR_Rotate_90) {
+	/* Rotate 90 degrees counter clockwise */
+        clip->x1 = rect->y1;
+	clip->x2 = rect->y2;
+	clip->y1 = w - rect->x2;
+	clip->y2 = w - rect->x1;
+    } else if (rotation == RR_Rotate_180) {
+	/* Rotate 180 degrees */
+        clip->x1 = w - rect->x2;
+	clip->x2 = w - rect->x1;
+	clip->y1 = h - rect->y2;
+	clip->y2 = h - rect->y1;
+    } else if (rotation == RR_Rotate_270) {
+	/* Rotate 90 degrees clockwise */
+        clip->x1 = h - rect->y2;
+	clip->x2 = h - rect->y1;
+	clip->y1 = rect->x1;
+	clip->y2 = rect->x2;
+    } else {
+	clip->x1 = rect->x1;
+	clip->x2 = rect->x2;
+	clip->y1 = rect->y1;
+	clip->y2 = rect->y2;
+    }
+}
+
 static int
-dispatch_dirty_region(ScrnInfoPtr scrn,
-                      PixmapPtr pixmap, DamagePtr damage, int fb_id)
+dispatch_dirty_region(ScrnInfoPtr scrn, xf86CrtcPtr crtc,
+		      PixmapPtr pixmap, DamagePtr damage, int fb_id)
 {
     modesettingPtr ms = modesettingPTR(scrn);
     RegionPtr dirty = DamageRegion(damage);
@@ -532,13 +564,9 @@ dispatch_dirty_region(ScrnInfoPtr scrn,
         if (!clip)
             return -ENOMEM;
 
-        /* XXX no need for copy? */
-        for (i = 0; i < num_cliprects; i++, rect++) {
-            clip[i].x1 = rect->x1;
-            clip[i].y1 = rect->y1;
-            clip[i].x2 = rect->x2;
-            clip[i].y2 = rect->y2;
-        }
+        /* Rotate and copy rects into clips */
+        for (i = 0; i < num_cliprects; i++, rect++)
+	    rotate_clip(pixmap, rect, &clip[i], crtc->rotation);
 
         /* TODO query connector property to see if this is needed */
         ret = drmModeDirtyFB(ms->fd, fb_id, clip, num_cliprects);
@@ -561,20 +589,31 @@ static void
 dispatch_dirty(ScreenPtr pScreen)
 {
     ScrnInfoPtr scrn = xf86ScreenToScrn(pScreen);
+    xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(scrn);
     modesettingPtr ms = modesettingPTR(scrn);
     PixmapPtr pixmap = pScreen->GetScreenPixmap(pScreen);
-    int fb_id = ms->drmmode.fb_id;
-    int ret;
+    uint32_t fb_id;
+    int ret, c, x, y ;
 
-    ret = dispatch_dirty_region(scrn, pixmap, ms->damage, fb_id);
-    if (ret == -EINVAL || ret == -ENOSYS) {
-        ms->dirty_enabled = FALSE;
-        DamageUnregister(ms->damage);
-        DamageDestroy(ms->damage);
-        ms->damage = NULL;
-        xf86DrvMsg(scrn->scrnIndex, X_INFO,
-                   "Disabling kernel dirty updates, not required.\n");
-        return;
+    for (c = 0; c < xf86_config->num_crtc; c++) {
+        xf86CrtcPtr crtc = xf86_config->crtc[c];
+        drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;
+
+        if (!drmmode_crtc)
+            continue;
+
+	drmmode_crtc_get_fb_id(crtc, &fb_id, &x, &y);
+
+        ret = dispatch_dirty_region(scrn, crtc, pixmap, ms->damage, fb_id);
+        if (ret == -EINVAL || ret == -ENOSYS) {
+            ms->dirty_enabled = FALSE;
+            DamageUnregister(ms->damage);
+            DamageDestroy(ms->damage);
+            ms->damage = NULL;
+            xf86DrvMsg(scrn->scrnIndex, X_INFO,
+                       "Disabling kernel dirty updates, not required.\n");
+            return;
+        }
     }
 }
 
@@ -586,7 +625,7 @@ dispatch_dirty_pixmap(ScrnInfoPtr scrn, 
     DamagePtr damage = ppriv->secondary_damage;
     int fb_id = ppriv->fb_id;
 
-    dispatch_dirty_region(scrn, ppix, damage, fb_id);
+    dispatch_dirty_region(scrn, crtc, ppix, damage, fb_id);
 }
 
 static void

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/drmmode_display.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/drmmode_display.c:1.11 xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/drmmode_display.c:1.12
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/drmmode_display.c:1.11	Fri Aug 12 08:18:29 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/drmmode_display.c	Wed Feb 26 01:17:32 2025
@@ -627,7 +627,7 @@ drmmode_crtc_can_test_mode(xf86CrtcPtr c
     return ms->atomic_modeset;
 }
 
-static Bool
+Bool
 drmmode_crtc_get_fb_id(xf86CrtcPtr crtc, uint32_t *fb_id, int *x, int *y)
 {
     drmmode_crtc_private_ptr drmmode_crtc = crtc->driver_private;

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/present.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/present.c:1.8 xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/present.c:1.9
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/present.c:1.8	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/drivers/modesetting/present.c	Wed Feb 26 01:17:32 2025
@@ -391,22 +391,24 @@ ms_present_unflip(ScreenPtr screen, uint
     PixmapPtr pixmap = screen->GetScreenPixmap(screen);
     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(scrn);
     int i;
-    struct ms_present_vblank_event *event;
 
     ms_present_set_screen_vrr(scrn, FALSE);
 
-    event = calloc(1, sizeof(struct ms_present_vblank_event));
-    if (!event)
-        return;
-
-    event->event_id = event_id;
-    event->unflip = TRUE;
-
-    if (ms_present_check_unflip(NULL, screen->root, pixmap, TRUE, NULL) &&
-        ms_do_pageflip(screen, pixmap, event, -1, FALSE,
-                       ms_present_flip_handler, ms_present_flip_abort,
-                       "Present-unflip")) {
-        return;
+    if (ms_present_check_unflip(NULL, screen->root, pixmap, TRUE, NULL)) {
+        struct ms_present_vblank_event *event;
+
+        event = calloc(1, sizeof(struct ms_present_vblank_event));
+        if (!event)
+            return;
+
+        event->event_id = event_id;
+        event->unflip = TRUE;
+
+        if (ms_do_pageflip(screen, pixmap, event, -1, FALSE,
+                           ms_present_flip_handler, ms_present_flip_abort,
+                           "Present-unflip")) {
+            return;
+        }
     }
 
     for (i = 0; i < config->num_crtc; i++) {

Index: xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw/fbdevhw.c
diff -u xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw/fbdevhw.c:1.5 xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw/fbdevhw.c:1.6
--- xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw/fbdevhw.c:1.5	Fri Jul 15 02:18:59 2022
+++ xsrc/external/mit/xorg-server/dist/hw/xfree86/fbdevhw/fbdevhw.c	Wed Feb 26 01:17:32 2025
@@ -335,9 +335,9 @@ fbdev_open(int scrnIndex, const char *de
         char *sysfs_path = NULL;
         char *node = strrchr(dev, '/') + 1;
 
-        if (asprintf(&sysfs_path, "/sys/class/graphics/%s", node) < 0 ||
+        if (asprintf(&sysfs_path, "/sys/class/graphics/%s/device/subsystem", node) < 0 ||
             readlink(sysfs_path, buf, sizeof(buf) - 1) < 0 ||
-            strstr(buf, "devices/pci")) {
+            strstr(buf, "bus/pci")) {
             free(sysfs_path);
             close(fd);
             return -1;

Index: xsrc/external/mit/xorg-server/dist/include/dix-config.h.in
diff -u xsrc/external/mit/xorg-server/dist/include/dix-config.h.in:1.9 xsrc/external/mit/xorg-server/dist/include/dix-config.h.in:1.10
--- xsrc/external/mit/xorg-server/dist/include/dix-config.h.in:1.9	Mon Dec 19 19:37:36 2022
+++ xsrc/external/mit/xorg-server/dist/include/dix-config.h.in	Wed Feb 26 01:17:32 2025
@@ -173,6 +173,9 @@
 /* Define to 1 if you have the `shmctl64' function. */
 #undef HAVE_SHMCTL64
 
+/* Define to 1 if the system has the type 'socklen_t'. */
+#undef HAVE_SOCKLEN_T
+
 /* Define to 1 if you have the <stdlib.h> header file. */
 #undef HAVE_STDLIB_H
 

Index: xsrc/external/mit/xorg-server/dist/os/WaitFor.c
diff -u xsrc/external/mit/xorg-server/dist/os/WaitFor.c:1.5 xsrc/external/mit/xorg-server/dist/os/WaitFor.c:1.6
--- xsrc/external/mit/xorg-server/dist/os/WaitFor.c:1.5	Fri Jul 15 02:19:01 2022
+++ xsrc/external/mit/xorg-server/dist/os/WaitFor.c	Wed Feb 26 01:17:33 2025
@@ -420,13 +420,13 @@ NextDPMSTimeout(INT32 timeout)
     switch (DPMSPowerLevel) {
     case DPMSModeOn:
         DPMS_CHECK_TIMEOUT(DPMSStandbyTime)
-
+        /* fallthrough */
     case DPMSModeStandby:
         DPMS_CHECK_TIMEOUT(DPMSSuspendTime)
-
+        /* fallthrough */
     case DPMSModeSuspend:
         DPMS_CHECK_TIMEOUT(DPMSOffTime)
-
+        /* fallthrough */
     default:                   /* DPMSModeOff */
         return 0;
     }

Index: xsrc/external/mit/xorg-server/dist/os/access.c
diff -u xsrc/external/mit/xorg-server/dist/os/access.c:1.7 xsrc/external/mit/xorg-server/dist/os/access.c:1.8
--- xsrc/external/mit/xorg-server/dist/os/access.c:1.7	Tue Feb  7 04:45:32 2023
+++ xsrc/external/mit/xorg-server/dist/os/access.c	Wed Feb 26 01:17:33 2025
@@ -1425,13 +1425,15 @@ RemoveHost(ClientPtr client, int family,
     case FamilyChaos:
     case FamilyServerInterpreted:
         if ((len = CheckAddr(family, pAddr, length)) < 0) {
-            client->errorValue = length;
+            if (client)
+                client->errorValue = length;
             return BadValue;
         }
         break;
     case FamilyLocal:
     default:
-        client->errorValue = family;
+        if (client)
+            client->errorValue = family;
         return BadValue;
     }
     for (prev = &validhosts;
@@ -1860,7 +1862,7 @@ siHostnameAddrMatch(int family, void *ad
         char hostname[SI_HOSTNAME_MAXLEN];
         int f, hostaddrlen;
         void *hostaddr;
-        const char **addrlist;
+        char **addrlist;
 
         if (siAddrLen >= sizeof(hostname))
             return FALSE;
@@ -1885,7 +1887,9 @@ siHostnameAddrMatch(int family, void *ad
                 if ((f == family) && (len == hostaddrlen) &&
                     (memcmp(addr, hostaddr, len) == 0)) {
                     res = TRUE;
+#ifdef h_addr
                     break;
+#endif
                 }
             }
         }

Index: xsrc/external/mit/xorg-server/dist/os/connection.c
diff -u xsrc/external/mit/xorg-server/dist/os/connection.c:1.8 xsrc/external/mit/xorg-server/dist/os/connection.c:1.9
--- xsrc/external/mit/xorg-server/dist/os/connection.c:1.8	Tue Feb  7 04:45:32 2023
+++ xsrc/external/mit/xorg-server/dist/os/connection.c	Wed Feb 26 01:17:33 2025
@@ -244,7 +244,7 @@ void
 CreateWellKnownSockets(void)
 {
     int i;
-    int partial;
+    int partial = 0;
 
     /* display is initialized to "0" by main(). It is then set to the display
      * number if specified on the command line. */

Index: xsrc/external/mit/xorg-server/dist/xkb/xkb.c
diff -u xsrc/external/mit/xorg-server/dist/xkb/xkb.c:1.10 xsrc/external/mit/xorg-server/dist/xkb/xkb.c:1.11
--- xsrc/external/mit/xorg-server/dist/xkb/xkb.c:1.10	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/dist/xkb/xkb.c	Wed Feb 26 01:17:33 2025
@@ -1093,10 +1093,10 @@ XkbSizeKeySyms(XkbDescPtr xkb, xkbGetMap
     len = rep->nKeySyms * SIZEOF(xkbSymMapWireDesc);
     symMap = &xkb->map->key_sym_map[rep->firstKeySym];
     for (i = nSyms = 0; i < rep->nKeySyms; i++, symMap++) {
-        if (symMap->offset != 0) {
-            nSymsThisKey = XkbNumGroups(symMap->group_info) * symMap->width;
-            nSyms += nSymsThisKey;
-        }
+        nSymsThisKey = XkbNumGroups(symMap->group_info) * symMap->width;
+        if (nSymsThisKey == 0)
+            continue;
+        nSyms += nSymsThisKey;
     }
     len += nSyms * 4;
     rep->totalSyms = nSyms;

Index: xsrc/external/mit/xorg-server/include/dix-config.h
diff -u xsrc/external/mit/xorg-server/include/dix-config.h:1.53 xsrc/external/mit/xorg-server/include/dix-config.h:1.54
--- xsrc/external/mit/xorg-server/include/dix-config.h:1.53	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/include/dix-config.h	Wed Feb 26 01:17:33 2025
@@ -171,6 +171,9 @@
 /* Define to 1 if you have the <stdlib.h> header file. */
 #define HAVE_STDLIB_H 1
 
+/* Define to 1 if the system has the type 'socklen_t'. */
+#define HAVE_SOCKLEN_T 1
+
 /* Define to 1 if you have the `strcasecmp' function. */
 #define HAVE_STRCASECMP 1
 
@@ -343,7 +346,7 @@
 #define XINERAMA 1
 
 /* Current Xorg version */
-#define XORG_VERSION_CURRENT ((10000000) + ((21) * 100000) + ((1) * 1000) + 14)
+#define XORG_VERSION_CURRENT ((10000000) + ((21) * 100000) + ((1) * 1000) + 16)
 
 /* Build Xv Extension */
 #define XvExtension 1

Index: xsrc/external/mit/xorg-server/include/version-config.h
diff -u xsrc/external/mit/xorg-server/include/version-config.h:1.23 xsrc/external/mit/xorg-server/include/version-config.h:1.24
--- xsrc/external/mit/xorg-server/include/version-config.h:1.23	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/include/version-config.h	Wed Feb 26 01:17:33 2025
@@ -5,13 +5,13 @@
 #define VERSION_CONFIG_H
 
 /* Vendor man version */
-#define VENDOR_MAN_VERSION "Version 21.1.14"
+#define VENDOR_MAN_VERSION "Version 21.1.16"
 
 /* Vendor name */
 #define VENDOR_NAME "The X.Org Foundation"
 
 /* Vendor release */
-#define VENDOR_RELEASE ((10000000) + ((21) * 100000) + ((1) * 1000) + 14)
+#define VENDOR_RELEASE ((10000000) + ((21) * 100000) + ((1) * 1000) + 16)
 
 #endif /* VERSION_CONFIG_H */
 

Index: xsrc/external/mit/xorg-server/include/xorg-config.h
diff -u xsrc/external/mit/xorg-server/include/xorg-config.h:1.33 xsrc/external/mit/xorg-server/include/xorg-config.h:1.34
--- xsrc/external/mit/xorg-server/include/xorg-config.h:1.33	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/include/xorg-config.h	Wed Feb 26 01:17:33 2025
@@ -17,7 +17,7 @@
 #define XORGSERVER 1
 
 /* Current X.Org version. */
-#define XORG_VERSION_CURRENT ((10000000) + ((21) * 100000) + ((1) * 1000) + 14)
+#define XORG_VERSION_CURRENT ((10000000) + ((21) * 100000) + ((1) * 1000) + 16)
 
 /* Name of X server. */
 #define __XSERVERNAME__ "Xorg"
Index: xsrc/external/mit/xorg-server/include/xorg-server.h
diff -u xsrc/external/mit/xorg-server/include/xorg-server.h:1.33 xsrc/external/mit/xorg-server/include/xorg-server.h:1.34
--- xsrc/external/mit/xorg-server/include/xorg-server.h:1.33	Wed Oct 30 21:16:59 2024
+++ xsrc/external/mit/xorg-server/include/xorg-server.h	Wed Feb 26 01:17:33 2025
@@ -140,7 +140,7 @@
 #define XORGSERVER 1
 
 /* Current Xorg version */
-#define XORG_VERSION_CURRENT ((10000000) + ((21) * 100000) + ((1) * 1000) + 14)
+#define XORG_VERSION_CURRENT ((10000000) + ((21) * 100000) + ((1) * 1000) + 16)
 
 /* Build Xv Extension */
 #define XvExtension 1

Reply via email to