This patch simplifies error handling in the HAL code and fixes a
segfault if libhal_find_device_by_capability() failed.
Fixes http://bugs.gentoo.org/278760
Based on a patch by Martin von Gagern <Martin.vGagern@gmx.net>
Signed-off-by: Rémi Cardona <remi@gentoo.org>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit b1c3dc6ae2)
crtc->funcs->lock is NULL, so it's no use calling it here. Move it down so
it's actually defined before we use it.
Introduced with 6f59a81600.
Tested-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 0de58c88ab)
Signed-off-by: Keith Packard <keithp@keithp.com>
The matrix multiply to combine rotation and projective transforms was being
done in the wrong order.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit b2bf67b61c)
Signed-off-by: Keith Packard <keithp@keithp.com>
This moves code out of each implementation of set_mode_major and back into
the X server. The real feature here is that the transform is now available
in the crtc for use by either xf86CrtcRotate or whatever the driver wants to
do. Without this change, the transform was lost for drivers providing the
set_mode_major interface.
Note that users of this API will want to stop smashing the transformPresent
field, and could also stop setting mode/x/y/rotation for new enough X servers,
but there's no reason to make that change as it will break things when
running against older X servers.
Signed-off-by: Keith Packard <keithp@keithp.com>
Acked-by: Daniel Stone <daniel@fooishbar.org>
(cherry picked from commit 6f59a81600)
Signed-off-by: Keith Packard <keithp@keithp.com>
Shortcut is impossible to implement this way, because we don't know for sure
whether the crtc of an output has changed or not.
(cherry picked from commit cadf65a6e1)
Signed-off-by: Keith Packard <keithp@keithp.com>
We don't return rates to randr < 1.1 clients, so don't allocate space
for them. This fixes a FatalError due to not all allocated space being
used.
X.Org bug#21861 <http://bugs.freedesktop.org/show_bug.cgi?id=21861>
Reported-by: Guillaume Quintin <coincoin169g@gmail.com>
Signed-off-by: Julien Cristau <jcristau@debian.org>
(cherry picked from commit 12e725d08b)
Signed-off-by: Keith Packard <keithp@keithp.com>
dixLookupResource attempted to automatically detect whether the caller
wanted a lookup by-type or by-class, unfortunately, it guessed wrong for
RT_NONE. Instead of trying to make the guess better, this patch just reverts
the unification and creates separate functions for each operation.
(cherry picked from commit f8dd80d13b)
Signed-off-by: Keith Packard <keithp@keithp.com>
since libXinerama commit 90d4d23bf2e94721149ddc0a80093b10a82e8845 and
xineramaproto commit 21477147613c28c968b5e1eb9d8aea7017dd399d, the
server no longer needs libXinerama.
Signed-off-by: Rémi Cardona <remi@gentoo.org>
(cherry picked from commit 2c69deb92e)
Signed-off-by: Keith Packard <keithp@keithp.com>
You could be more clever than this, but the wire protocol says this
really is an array of not more than 255 ARRAY8, so it's not just a
matter of changing the types.
(cherry picked from commit 0eb19f9437)
c859b736d1 removed duplicate entries for
these from the Makefile, but removed a different set than was done in
master branch, causing xf86Parser.h to not be installed, which in turn
breaks the build of drivers like -ati, -intel & -nv that use xf86Modes.h,
which includes xf86Parser.h
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
The old DRI2 buffer allocation API wasn't great, but there's no reason to
make the server stop working with those drivers. This patch has the
X server adapting to the API provided by the driver, using the new API where
available and falling back to the old API as necessary. A warning will be
placed in the log file when the old API is in use.
(cherry picked from commit 2e2c5b216c)
Signed-off-by: Keith Packard <keithp@keithp.com>
fixes https://bugs.freedesktop.org/show_bug.cgi?id=22547
This bug was fixed in a big clean-up commit in master, which cannot be
backported (see commit b1dac41fb3)
Signed-off-by: Rémi Cardona <remi@gentoo.org>
Signed-off-by: Keith Packard <keithp@keithp.com>
Proto headers updating resulting in the server advertising new versions is
broken. This should be applied to every extension.
This fixes the build against slightly-older xineramaproto.
(cherry picked from commit b349a764e9)
Signed-off-by: Keith Packard <keithp@keithp.com>
Wrong check for inputInfo.pointer resulted in a SW cursor being rendered when
the pointer left the screen (in a Xinerama setup).
We must call the sprite rendering function if
- SW cursors are enabled, or
- The current device is not the VCP and not attached to the VCP.
Backported from commit 66089e9129 for
server-1.6-branch by Peter Hutterer
Reported-by: Gordon Yuan <GordonYuan@viatech.com.cn>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Keith Packard <keithp@keithp.com>
The lastSetTime value which indicates when the configuration within the
server was last changed was not getting set in the appropriate RandR
requests.
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit 69a9545d1f)
Signed-off-by: Keith Packard <keithp@keithp.com>
Also, remove redundant field swaps and make others match the order in which
they are declared in the xRR*NotifyEvent structs.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
(cherry picked from commit e244a5991e)
Signed-off-by: Keith Packard <keithp@keithp.com>
Xephyr doesn't manually set Activate/DeactivateGrab for new devices,
resulting in a NULL-pointer dereference later when a grab is activated.
Avoid the segfault by ensuring that the pointer is always valid.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 6f9e220498)
Signed-off-by: Keith Packard <keithp@keithp.com>
Remove notices for code no longer in tree (Xprint, Xgl, kdrive, cfb, etc.)
Add/update notices for new/changed code in tree
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
(cherry picked from commit b746a00cff)
Signed-off-by: Keith Packard <keithp@keithp.com>
Error: Write outside array bounds at Xext/geext.c:406
in function 'GEWindowSetMask' [Symbolic analysis]
In array dereference of cli->nextSib[extension] with index 'extension'
Array size is 128 elements (of 4 bytes each), index <= 128
Error: Buffer overflow at dix/events.c:592
in function 'SetMaskForEvent' [Symbolic analysis]
In array dereference of filters[deviceid] with index 'deviceid'
Array size is 20 elements (of 512 bytes each), index >= 0 and index <= 20
Error: Read buffer overflow at hw/xfree86/loader/loader.c:226
in function 'LoaderOpen' [Symbolic analysis]
In array dereference of refCount[new_handle] with index 'new_handle'
Array size is 256 elements (of 4 bytes each), index >= 1 and index <= 256
These bugs were found using the Parfait source code analysis tool.
For more information see http://research.sun.com/projects/parfait
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
Signed-off-by: Adam Jackson <ajax@redhat.com>
Acked-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit b680bda34d)
(cherry picked from commit 04c9e80f08)
Signed-off-by: Keith Packard <keithp@keithp.com>
Zapping is triggered by xkb these days, so note in the man page that it's the
Terminate_Server action. Since it's XKB, personal preferences towards or
against zapping should be achieved through xkb rulesets.
If Terminate_Server is not in the xkb actions, then we can't zap anyway and we
don't need a default of DontZap "on".
This patch restores the old meaning of DontZap - disallow zapping altogether,
regardless of XKB's current keymap.
Ideally, this patch should be accompanied by b0f64bdab00db652e in
xkeyboard-config.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 737b49199a)
Signed-off-by: Keith Packard <keithp@keithp.com>
In ProcXkbGetKbdByName, mrep.firstVModMapKey, .nVModMapKeys and
.totalVModMapKeys were not initialized, contained random values and caused
accesses to unallocated and later modified memory, causing
XkbSizeVirtualModMap and XkbWriteVirtualModMap to see different number of
nonzero values, resulting in writes past the end of an array in XkbSendMap.
This patch initializes those values sensibly and reverts commits 5c0a2088 and
6dd4fc46, which have been plain non-sense.
Signed-off-by: Tomas Janousek <tomi@nomi.cz>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 525aa17f80)
Signed-off-by: Keith Packard <keithp@keithp.com>
The number of buffers is likely to change in the future, so having
this as a define is the right way to go.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
(cherry picked from commit 03aebed519)
For redirected rendering we end up with pixmaps (which the app thinks are
windows) that are double buffered.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Pierre Willenbrock <pierre@pirsoft.de>
(cherry picked from commit 0d9d3f3e36)
This change implements the protocol for DRI2GetBuffersWithFormat, but
the bulk of the differences are the changes to the extension / driver
interface to make this function work. The old CreateBuffers and
DeleteBuffers routines are replaced with CreateBuffer and DeleteBuffer
(both singular).
This allows drivers to allocate buffers for a drawable one at a time.
As a result, 3D drivers can now allocate the (fake) front-buffer for a
window only when it is needed. Since 3D drivers only ask for the
front-buffer on demand, the real front-buffer is always created. This
allows CopyRegion impelemenations of SwapBuffers to continue working.
As with previous version of this code, if the client asks for the
front-buffer for a window, we instead give it the fake front-buffer.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Kristian Høgsberg <krh@redhat.com>
If a front-buffer is requested for a window, add the fake front-buffer
to the list of requested buffers.
Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
(cherry picked from commit aa2928325f)