diff options
author | Matthias Hopf <mhopf@suse.de> | 2008-11-28 17:39:23 +0100 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2008-12-09 20:55:57 -0800 |
commit | f7e2fee8fe9b47f1e898feb8419aacd9a32c1f01 (patch) | |
tree | ce11bcafb8bef73796acd6186037963e1c971347 | |
parent | 27ca32eb05101e0e5624422dd25e1aa95b129d77 (diff) |
randr: Crtc interface update for panning support.
(cherry picked from commit 834cbc16f3eb539704faade7bff347b161ce69d9)
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | hw/xfree86/modes/xf86Crtc.h | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/hw/xfree86/modes/xf86Crtc.h b/hw/xfree86/modes/xf86Crtc.h index 4b6f7d2a1..f085bf74e 100644 --- a/hw/xfree86/modes/xf86Crtc.h +++ b/hw/xfree86/modes/xf86Crtc.h @@ -213,9 +213,16 @@ typedef struct _xf86CrtcFuncs { Bool (*set_mode_major)(xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int x, int y); + + /** + * Callback for panning. Doesn't change the mode. + */ + void + (*pan)(xf86CrtcPtr crtc, int x, int y); + } xf86CrtcFuncsRec, *xf86CrtcFuncsPtr; -#define XF86_CRTC_VERSION 1 +#define XF86_CRTC_VERSION 2 struct _xf86Crtc { /** @@ -321,6 +328,15 @@ struct _xf86Crtc { * Bounding box in screen space */ BoxRec bounds; + /** + * Panning: + * TotalArea: total panning area, larger than CRTC's size + * TrackingArea: Area of the pointer for which the CRTC is panned + * border: Borders of the displayed CRTC area which induces panning if the pointer reaches them + */ + BoxRec panningTotalArea; + BoxRec panningTrackingArea; + INT16 panningBorder[4]; }; typedef struct _xf86OutputFuncs { @@ -678,6 +694,9 @@ Bool xf86CrtcSetMode (xf86CrtcPtr crtc, DisplayModePtr mode, Rotation rotation, int x, int y); +void +xf86CrtcPan (xf86CrtcPtr crtc, int x, int y); + /* * Assign crtc rotation during mode set */ @@ -867,4 +886,19 @@ xf86_unwrap_crtc_notify(ScreenPtr pScreen, xf86_crtc_notify_proc_ptr old); void xf86_crtc_notify(ScreenPtr pScreen); +/** + * Panning + */ +Bool +xf86_crtc_get_panning(ScrnInfoPtr pScrn, + BoxPtr totalArea, + BoxPtr TrackingArea, + INT16 *border); + +Bool +xf86_crtc_set_panning(ScrnInfoPtr pScrn, + BoxPtr totalArea, + BoxPtr TrackingArea, + INT16 *border); + #endif /* _XF86CRTC_H_ */ |