From cdcb575664d3d60b662c542e782de83a047165c9 Mon Sep 17 00:00:00 2001 From: Tiago Vignatti Date: Fri, 22 Jan 2010 17:58:17 +0200 Subject: DRI2: add AuthMagic hook for driver side support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With this new hook, drmAuthMagic becomes useless and should be deprecated. You might want to implement AuthMagic on driver side instead. Signed-off-by: Tiago Vignatti Signed-off-by: Pauli Nieminen Reviewed-by: Kristian Høgsberg --- hw/xfree86/dri2/dri2.c | 13 +++++++++++-- hw/xfree86/dri2/dri2.h | 8 +++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c index 29c917f21..03255a25d 100644 --- a/hw/xfree86/dri2/dri2.c +++ b/hw/xfree86/dri2/dri2.c @@ -94,6 +94,7 @@ typedef struct _DRI2Screen { DRI2ScheduleSwapProcPtr ScheduleSwap; DRI2GetMSCProcPtr GetMSC; DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC; + DRI2AuthMagicProcPtr AuthMagic; HandleExposuresProcPtr HandleExposures; @@ -968,8 +969,8 @@ DRI2Authenticate(ScreenPtr pScreen, drm_magic_t magic) { DRI2ScreenPtr ds = DRI2GetScreen(pScreen); - if (ds == NULL || drmAuthMagic(ds->fd, magic)) - return FALSE; + if (ds == NULL || (*ds->AuthMagic)(ds->fd, magic)) + return FALSE; return TRUE; } @@ -1040,6 +1041,14 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info) cur_minor = 1; } + if (info->version >= 5) { + ds->AuthMagic = info->AuthMagic; + } + + if (!ds->AuthMagic) + ds->AuthMagic = drmAuthMagic; + + /* Initialize minor if needed and set to minimum provied by DDX */ if (!dri2_minor || dri2_minor > cur_minor) dri2_minor = cur_minor; diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h index be44bdd75..29b1d9b2e 100644 --- a/hw/xfree86/dri2/dri2.h +++ b/hw/xfree86/dri2/dri2.h @@ -66,6 +66,8 @@ typedef void (*DRI2CopyRegionProcPtr)(DrawablePtr pDraw, DRI2BufferPtr pSrcBuffer); typedef void (*DRI2WaitProcPtr)(WindowPtr pWin, unsigned int sequence); +typedef int (*DRI2AuthMagicProcPtr)(int fd, uint32_t magic); + /** * Schedule a buffer swap * @@ -159,7 +161,7 @@ typedef void (*DRI2InvalidateProcPtr)(DrawablePtr pDraw, /** * Version of the DRI2InfoRec structure defined in this header */ -#define DRI2INFOREC_VERSION 4 +#define DRI2INFOREC_VERSION 5 typedef struct { unsigned int version; /**< Version of this struct */ @@ -183,6 +185,10 @@ typedef struct { /* array of driver names, indexed by DRI2Driver* driver types */ /* a name of NULL means that driver is not supported */ const char * const *driverNames; + + /* added in version 5 */ + + DRI2AuthMagicProcPtr AuthMagic; } DRI2InfoRec, *DRI2InfoPtr; extern _X_EXPORT int DRI2EventBase; -- cgit v1.2.3