Commit graph

19 commits

Author SHA1 Message Date
Keith Packard
efcec7dbd3 Rotate screen size as needed from RandR 1.1 change requests.
Screen size must reflect rotated mode size when setting rotated mode using
RandR 1.1 SetScreenConfig request.
2007-04-09 14:29:46 -07:00
Keith Packard
63cc2a51ef Add support for user-defined modelines in RandR.
The RandR protocol spec has several requests in support of user-defined
modes, but the implementation was stubbed out inside the X server. Fill out
the DIX portion and start on the xf86 DDX portion. It might be necessary to
add more code to the DDX to insert the user-defined modes into the output
mode list.
2007-02-18 23:49:38 -08:00
Keith Packard
3eebfb0a99 Report correct RandR 1.0 sizeID. Report correct subpixel order.
RandR 1.0 sizeID must be computed the same way every time, so when reporting
it in the ScreenChangeNotify event, just construct the usual 1.0 data block
and use that.

subpixel geometry information can be computed by looking at the connected
outputs and finding any with subpixel geometry and using one of those for
the global screen subpixel geometry. This might be improved by reporting
None if more than one screen has information and they conflict.
2007-02-15 20:13:15 -08:00
Keith Packard
f05dd384d3 Use RRScreenSetSizeRange in 1.0 compat. Check RRGetInfo for error.
The RRScreenSizeSetRange function is used externally for 1.2 API drivers,
but can also be used in the 1.0 compatibility code. This also ensures that
the right changed bits are set so that clients are correctly notified when
the range changes.

RRGetInfo can return an error, use that to return BadAlloc to clients
instead of blindly going on with various requests.
2006-12-30 21:52:22 -08:00
Keith Packard
f42e3cea23 Track physical screen size and send out updates when that changes.
Events and internal data structures need to be updated whenever the physical
or pixel size of the screen changes. The code was ignoring the physical
size, so changing only that would not be registered anywhere.
2006-12-21 23:50:39 -08:00
Keith Packard
91396f1430 Merge branch 'randr-1.2-for-server-1.2-origin' into randr-1.2-for-server-1.2 2006-12-13 01:21:53 -08:00
Keith Packard
612a8e6180 RandR 1.2 rotation code must adjust width/height.
Mode lines reflect the monitor mode, not the projected size into the frame
buffer. Flip width/height around so that the dimensions are oriented
correctly.
2006-12-13 01:21:32 -08:00
Keith Packard
6dc711833d RandR 1.0 refresh rates unscrambled. SetScreenConfig uses RRCrtcSet right.
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.
2006-12-13 00:58:54 -08:00
Keith Packard
8b2a7e94a1 Remove RandR output options.
RandR output options are now expected to be handled by properties instead.
2006-11-16 10:15:30 -08:00
Keith Packard
8d0ac835bc Allow RandR objects to be created before the associated ScreenRec.
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.
2006-11-16 10:15:29 -08:00
Keith Packard
354603f509 Move physical size from mode to output.
Modes can be shared across different sized monitors this way.

Also caught some missing byteswapping and an incorrect return type.
2006-11-16 10:15:28 -08:00
Keith Packard
368cf03d33 Merge master back in and clean up some unfinished code (closes 8745) 2006-11-16 10:15:27 -08:00
Keith Packard
39ecb2b109 Limit pointer to valid crtc areas. Add event swapping. Fix change tracking.
Add function to keep pointer within valid crtc areas.
Finish event delivery and swapping code.
Separate configuration from layout changes to send correct events.
2006-11-16 10:03:01 -08:00
Keith Packard
0f37ee35a8 Add mode origins and output options. Fix memmoves in resource free funcs.
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.
2006-11-16 10:03:00 -08:00
Keith Packard
817a82faaf Steal Xinerama code from SiS driver. Add missing files.
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.
2006-11-16 10:02:59 -08:00
Keith Packard
3516e85b45 RRSetCrtcConfig status fix. RRGetScreenResources timestamp fix.
RRSetCrtcConfig was returning the wrong status values.
RRGetScreenResources was always returning currentTime.
2006-11-16 10:02:58 -08:00
Keith Packard
f133e72d82 Avoid calling xalloc(0). Change rrScreenSizeSet to rrScreenSetSize. 2006-11-16 10:02:56 -08:00
Keith Packard
cd63e82aa5 Split out 1.0-style info and new property routines to their own files. 2006-11-16 10:02:56 -08:00
Keith Packard
cbb587582e Split RandR implementation into separate files.
RandR is getting too big to live in one file; split into one file per object
type (crtc, mode, screen), leaving the rest of the code in randr.c.

Code is slowly approaching the point where it will drop-in as a replacement
for the old 1.0 implementation.
2006-11-16 10:02:53 -08:00