summaryrefslogtreecommitdiff
path: root/xserver/hw/xfree86/modes/xf86Crtc.h
diff options
context:
space:
mode:
Diffstat (limited to 'xserver/hw/xfree86/modes/xf86Crtc.h')
-rw-r--r--xserver/hw/xfree86/modes/xf86Crtc.h93
1 files changed, 91 insertions, 2 deletions
diff --git a/xserver/hw/xfree86/modes/xf86Crtc.h b/xserver/hw/xfree86/modes/xf86Crtc.h
index 14ba9d714..1d1124a1b 100644
--- a/xserver/hw/xfree86/modes/xf86Crtc.h
+++ b/xserver/hw/xfree86/modes/xf86Crtc.h
@@ -47,6 +47,7 @@
typedef struct _xf86Crtc xf86CrtcRec, *xf86CrtcPtr;
typedef struct _xf86Output xf86OutputRec, *xf86OutputPtr;
+typedef struct _xf86Lease xf86LeaseRec, *xf86LeasePtr;
/* define a standard for connector types */
typedef enum _xf86ConnectorType {
@@ -195,6 +196,8 @@ typedef struct _xf86CrtcFuncs {
*/
void
(*show_cursor) (xf86CrtcPtr crtc);
+ Bool
+ (*show_cursor_check) (xf86CrtcPtr crtc);
/**
* Hide cursor
@@ -245,7 +248,7 @@ typedef struct _xf86CrtcFuncs {
} xf86CrtcFuncsRec, *xf86CrtcFuncsPtr;
-#define XF86_CRTC_VERSION 7
+#define XF86_CRTC_VERSION 8
struct _xf86Crtc {
/**
@@ -625,6 +628,11 @@ struct _xf86Output {
/** Whether to use the old per-screen Monitor config section */
Bool use_screen_monitor;
+ /** For pre-init, whether the output should be excluded from the
+ * desktop when there are other viable outputs to use
+ */
+ Bool non_desktop;
+
#ifdef RANDR_12_INTERFACE
/**
* RandR 1.2 output structure.
@@ -670,6 +678,54 @@ typedef struct _xf86ProviderFuncs {
} xf86ProviderFuncsRec, *xf86ProviderFuncsPtr;
+#define XF86_LEASE_VERSION 1
+
+struct _xf86Lease {
+ /**
+ * ABI versioning
+ */
+ int version;
+
+ /**
+ * Associated ScrnInfo
+ */
+ ScrnInfoPtr scrn;
+
+ /**
+ * Driver private
+ */
+ void *driver_private;
+
+ /**
+ * RandR lease
+ */
+ RRLeasePtr randr_lease;
+
+ /*
+ * Contents of the lease
+ */
+
+ /**
+ * Number of leased CRTCs
+ */
+ int num_crtc;
+
+ /**
+ * Number of leased outputs
+ */
+ int num_output;
+
+ /**
+ * Array of pointers to leased CRTCs
+ */
+ RRCrtcPtr *crtcs;
+
+ /**
+ * Array of pointers to leased outputs
+ */
+ RROutputPtr *outputs;
+};
+
typedef struct _xf86CrtcConfigFuncs {
/**
* Requests that the driver resize the screen.
@@ -685,8 +741,29 @@ typedef struct _xf86CrtcConfigFuncs {
*/
Bool
(*resize) (ScrnInfoPtr scrn, int width, int height);
+
+ /**
+ * Requests that the driver create a lease
+ */
+ int (*create_lease)(RRLeasePtr lease, int *fd);
+
+ /**
+ * Ask the driver to terminate a lease, freeing all
+ * driver resources
+ */
+ void (*terminate_lease)(RRLeasePtr lease);
} xf86CrtcConfigFuncsRec, *xf86CrtcConfigFuncsPtr;
+/*
+ * The driver calls this when it detects that a lease
+ * has been terminated
+ */
+extern _X_EXPORT void
+xf86CrtcLeaseTerminated(RRLeasePtr lease);
+
+extern _X_EXPORT void
+xf86CrtcLeaseStarted(RRLeasePtr lease);
+
typedef void (*xf86_crtc_notify_proc_ptr) (ScreenPtr pScreen);
typedef struct _xf86CrtcConfig {
@@ -993,10 +1070,22 @@ static _X_INLINE _X_DEPRECATED void xf86_reload_cursors(ScreenPtr screen) {}
/**
* Called from EnterVT to turn the cursors back on
*/
-extern _X_EXPORT void
+extern _X_EXPORT Bool
xf86_show_cursors(ScrnInfoPtr scrn);
/**
+ * Called by the driver to turn a single crtc's cursor off
+ */
+extern _X_EXPORT void
+xf86_crtc_hide_cursor(xf86CrtcPtr crtc);
+
+/**
+ * Called by the driver to turn a single crtc's cursor on
+ */
+extern _X_EXPORT Bool
+xf86_crtc_show_cursor(xf86CrtcPtr crtc);
+
+/**
* Called by the driver to turn cursors off
*/
extern _X_EXPORT void