Commit Graph

2550 Commits

Author SHA1 Message Date
Enrico Weigelt, metux IT consult 45e7a34335 (!1966) dix: a little bit more startup logging
Adding a little bit more logging to the startup process, eg. telling
when outputs or inputs have been initialized. Serving as a little aid for
debugging driver problems.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult b8209d0342 (!1967) dix: protect input_option_set_value() from NULL pointer
Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 36d533f830 (!1967) dix: extra NULL safety check in SetClipRects()
Even though it might never be actually hit, it's better to have an
(really cheap) extra check, just in case.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 9b76094c53 (!1967) dix: extra NULL protection in UnmapSubwindows()
Even though it probably won't be hit ever, it's still better to be
really sure instead of some remote chance for hard segfault.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 34360efebc (!1967) dix: clear free()ed pointers on CloseDownExtensions()
As safety precaution, clear the pointers to extion records that just
have been free()ed.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult ed84f43274 (!1967) dix: NULL-protect AllocGlyphCursor()
Return error to the client if sourcefont turns out to be NULL for
whatever reason.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 709db0833e (!1967) dix: devices: refine NULL checks in GetMaster()
The checking / branchin isn't entirely trivial to understand, and the
analyzer also gets confused. So rewrite it in an simpler way that's
easier to understand both the human reader as well as the analyzer.
(and so get rid of yet another false alarm)

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 8c1b6212e1 (!1967) dix: region: turn xfreeData() into inline func and add checks
For type-safety turn xfreeData() macro into an inline function.
Also adding some checks against accidentially free()'ing global data.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult fe301f124a (!1967) dix: make DeviceEnterLeaveEvent() anaylzer-friendly
The analyzer giving a false alarm on potential NULL-pointer deref here.
Even though that case can't happen, it's also not immediately clear
to the human reader.

To make both the analyzer as well human reader happier, reformulating
this function to by using fast-return pattern.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 1014867436 (!1967) dix: protect ChangeWindowDeviceCursor() from allocation failure
On memory allocation failure, return BadAlloc instead of crashing.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 83445aa080 (!1967) dix: dixfonts: explain analyzer false alarm on alleged free() of stack chunk
The analyzer is wrong here, because the free'd closure pointer really points
to some calloc()'d chunk, instead of the PolyText()'s stack frame.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 7dd92b77bc (!1967) dix: NULL-protection in GestureAddRegularListener()
protect against the (unlikely) case that inputMasks == NULL.

| ../dix/gestures.c: In function ‘GestureAddRegularListener’:
| ../include/list.h:376:21: warning: dereference of NULL ‘0’ [CWE-476] [-Wanalyzer-null-dereference]
|   376 |         for (_entry = _list; _entry; _entry = (_entry)->_member)
| ../dix/gestures.c:241:9: note: in expansion of macro ‘nt_list_for_each_entry’
|   241 |         nt_list_for_each_entry(iclients, inputMasks->inputClients, next) {
|       |         ^~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult be470cbf46 (!1967) dix: protect from pScreen->SetCursorPosition == NULL
It's safer not relying on all ScreenProc's actually filled.

../dix/events.c: In function ‘CheckPhysLimits’:
../dix/events.c:780:14: warning: dereference of NULL ‘pScreen’ [CWE-476] [-Wanalyzer-null-dereference]
  780 |             (*pScreen->SetCursorPosition)
      |             ~^~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 6d22e94cb4 (!1967) dix: touch: NULL-protection in TouchAddRegularListener()
protect against the (unlikely) case that inputMasks == NULL.

| ../dix/touch.c: In function ‘TouchAddRegularListener’:
| ../include/list.h:376:21: warning: dereference of NULL ‘0’ [CWE-476] [-Wanalyzer-null-dereference]
|   376 |         for (_entry = _list; _entry; _entry = (_entry)->_member)
| ../dix/touch.c:766:9: note: in expansion of macro ‘nt_list_for_each_entry’
|   766 |         nt_list_for_each_entry(iclients, inputMasks->inputClients, next) {
|       |         ^~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 8ab10dd316 (!1967) dix: region: add comments on xfreeData()
Commenting a few aspects need to be considered when using this macro.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 830b37f863 (!1967) dix: protect against alloc failure in ‘DeviceFocusEvent()
Fixes analyzer warning:

| ../dix/enterleave.c: In function ‘DeviceFocusEvent’:
| ../dix/enterleave.c:788:20: warning: dereference of possibly-NULL ‘xi2event’ [CWE-690] [-Wanalyzer-possible-null-dereference]
|   788 |     xi2event->type = GenericEvent;
|   ‘DoFocusEvents’: events 1-4

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult 709e8e04b5 (!1967) dix: move props into WindowRec and fix potential NULL deref
The pointer to the window properties is currently inside the WindowOptional
structure, which may or may not exist at any given time. Thus, before accessing
those fields, at least need to check whether it exists, potentially need to
create it first.

Since a pointer is small (in relation to WindowRec) and windows having properties
is a pretty common, we can make our life much simpler here by moving the pointer
directly into WindowRec, so we don't need extra WindowOptionalRec allocation.

This also fixes an analyzer warning on potential NULL dereference issue:

| ../dix/property.c: In function ‘dixChangeWindowProperty’:
|../dix/property.c:343:37: warning: dereference of NULL ‘*pWin.optional’ [CWE-476] [-Wanalyzer-null-dereference]
|  343 |         pProp->next = pWin->optional->userProps;
|      |                       ~~~~~~~~~~~~~~^~~~~~~~~~~

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult a74b264aa0 (!1967) dix: protect doPolyText() from potential NULL dereference
There's a (theoretical) chance that origGC might be NULL, so better
be cautious and check for this - doesn't cost us much, probably just
another JZ instruction.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:31 +02:00
Enrico Weigelt, metux IT consult ccd7366687 (!1986) XI: unexport XIPropToInt() and XIPropToFloat()
Not used by any drivers, and subject to upcoming changes, so no need
to keep them exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:30 +02:00
Enrico Weigelt, metux IT consult 3f175efe19 (!1989) panoramix: replace FOR_NSCREENS() by FOR_NSCREENS_BACKWARD(i)
FOR_NSCREENS() is just alias for FOR_NSCREENS_BACKWARD(). In many cases
it really matters that we're going backwards and the last iteration visited
the screen #0, and that one is panoramix-wrapped.

Thus directly calling FOR_NSCREENS_BACKWARD() here and dropping the alias.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:30 +02:00
Enrico Weigelt, metux IT consult 20df0ce063 (!2002) dix: drop unused SetVendorRelease()
Not used anywhere, so no need to keep it around any longer.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 3c40cdd159 (!2003) dix: unexport InitAtoms() and FreeAllAtoms()
Not used by any drivers, very DIX-internal, so should not be part
of public API.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 1e0e81fc28 (!2003) dix: replace AtomError() by better messages
Not used by any exteral drivers (and really should not be used by them),
so can be replaced by more fitting error messages.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult eeb619271a (!2004) dix: unexport SetInputCheck() and make it inline
Not used by any drivers, so no need to keep it exported.
It's also so simple (and rarely called) that easily can be inlined.

Also unexport HWEventQueueType and HWEventQueuePtr, since they're
not used by any drivers.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 0797de679d (!2007) dix: unexport LastEventTimeToggleResetAll()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 8df7a46548 (!2007) dix: unexport LastEventTimeToggleResetFlag()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 4d263f8b34 (!2007) dix: unexport LastEventTimeWasReset()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult fb68d06d87 (!2007) dix: unexport LastEventTime()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 04fce17213 (!2007) dix: unexport NoticeEventTime()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult dae93e5ec9 (!2007) dix: unexport NoticeTime()
Not used by any external drivers, so no need to keep it public.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult f21650545a (!2007) dix: unexport InitBlockAndWakeupHandlers()
Not supposed to be called by drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 2a4b4930aa (!2007) dix: unexport WakeupHandler()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 33a5e41819 (!2007) dix: unexport BlockHandler()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 92e70b1909 (!2007) dix: rename IsFloating() to InputDevIsFloating()
Give it a better fitting name.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 3bd547df4c (!2007) dix: unexport and document IsFloating()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 1bb3a74608 (!2007) dix: rename IsMaster to InputDevIsMaster()
Give it a better fitting name.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 39e8ebe710 (!2007) dix: unexport IsMaster()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult b2670ee7a7 (!2007) dix: unexport IsKeyboardDevice()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 9d11af1f8b (!2007) dix: unexport IsPointerDevice()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 4ff7046fa4 (!2007) dix: rename IsParent() to WindowIsParent()
Spending it a more fitting name.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult dc57d512cf (!2007) dix: unexport IsParent()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult d820eb6599 (!2007) dix: unexport PickKeyboard()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 90ad705c2c (!2007) dix: unexport PickPointer()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 7cda1acb69 (!2007) dix: unexport OtherClientGone()
Just an internal resource destructor, not used by any external
drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 2519cb6f96 (!2007) dix: unexport and document ScreenRestructured()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 38c186fdba (!2007) dix: unexport and document WindowsRestructured()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 0506d1155b (!2007) dix: unexport and document WindowHasNewCursor()
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult c95bf971bb (!2007) dix: unexport RootWindowFinalizeCallback field
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult f6d3f6a82a (!2007) dix: unexport DeviceEventCallback field
Not used by any external drivers, so no need to keep it exported.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00
Enrico Weigelt, metux IT consult 63f59be11f (!2007) dix: unexport DeliverRawEvent()
Not used by any external drivers, so no need to keep it public.

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
2025-06-03 11:37:29 +02:00