RandR 1.0 refresh rates were scrambled when working with a 1.2 driver that
returned sizes in a mixed order. SetScreenConfig was treating RRCrtcSet as
returning an RandR status instead of a Bool.
The config time in the RandR protocol reflects when the hardware state has
changed. It was getting changed anytime the driver changed the usage
of the hardware as well.
When an output no longer reports the current mode, it must still be included
in the list advertised by the X server. Walk the crtcs to ensure it is
included.
This patch blacklists the load "drm" line, moves some functions in dri module
links dri module against libdrm, and removes the X copy of libdrm
(cherry picked from fd91630b73 commit)
Handle an argument of 0 in ffs(), instead of looping indefinitely.
Add an ffs prototype to dix.h, and add includes to ffs.c.
(cherry picked from 34164e551e4c3909322d50b09835ca4ac1d49d68 commit)
(cherry picked from acb5ff4c73 commit)
Fixes a build breakage when $(top_srcdir) != $(top_builddir) because
-I$(top_srcdir)/include is missing for the cvt, ioport, pcitweak, and scanpci
builds.
Signed-off-by: Adam Jackson <ajax@nwnk.net>
(cherry picked from ee9bdd3f4a commit)
As discussed on the mailing list, people would rather have an X command-line
option to print the module path so installers can know where to put modules,
rather than the installers using `pkg-config --variable=moduledir xorg-server`,
since some distros choose not to install xorg-server.pc.
(cherry picked from 0a2a6e4070 commit)
The logic for freeing GL contexts introduced by "Fix AIGLX VT switching." is
inverted. As it is now, GL context destruction is deferred for glxDRIEnterVT().
(cherry picked from f17e3c34df commit)
RRCrtcDestroyResource and RROutputDestroyResource had matching
bugs that would overwrite memory past the end of the storage
of the crtc or output arrays. Oops.
Now that resources can be created during server initialization, make sure
the crtc, output and mode resource types are created before attempting to
create associated resources.
This patch tracks the protocol changes which introduce more complex
semantics for RandR output properties including pending and valid value
information.
To allow RandR objects to be created before the screen object exists,
the resource types must be registered with the resource database.
A driver wishing to create RandR objects must call RRInit before doing so.
Also, fix a segfault when setting Output data before it is associated with a
screen.
xf86 drivers need to create RandR object in the PreInit stage,
before the ScreenRec is allocated. Changing the RandR DIX code
to permit this required the addition of functions that later associate the
objects with the related screen.
An additional change is that modes are now global, and no longer associated
with a specific screen. This change actually makes mode management cleaner
as there is no more per-screen list of modes to deal with.
This changes the RandR 1.2 ABI/API for drivers.
Add function to keep pointer within valid crtc areas.
Finish event delivery and swapping code.
Separate configuration from layout changes to send correct events.
Output options and mode origins both affected driver ABI. memmove mistakes
were causing 'Freeing resource which isn't there' messages.
Prune unused non-user defined modes from available list now.
Provide a Xinerama implementation when DIX version isn't enabled. This
version exposes each crtc as a separate 'screen' and reports the size of
that patch. The extension also sends ConfigureNotify events to the root
window whenever crtcs change so that applications will re-fetch xinerama
information. This actually works for metacity.