With this new hook drmAuthMagic becomes useless and should be deprecated.
You might want to implement AuthMagic on driver side instead.

Attention: ABI being break.

Signed-off-by: Tiago Vignatti <[email protected]>
---
 hw/xfree86/dri2/dri2.c |   13 +++++++++++--
 hw/xfree86/dri2/dri2.h |    5 ++++-
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index 3db826e..9505401 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -81,6 +81,7 @@ typedef struct _DRI2Screen {
     DRI2ScheduleSwapProcPtr     ScheduleSwap;
     DRI2GetMSCProcPtr           GetMSC;
     DRI2ScheduleWaitMSCProcPtr  ScheduleWaitMSC;
+    DRI2AuthMagicProcPtr        AuthMagic;
 
     HandleExposuresProcPtr       HandleExposures;
 } DRI2ScreenRec;
@@ -790,8 +791,15 @@ DRI2Authenticate(ScreenPtr pScreen, drm_magic_t magic)
 {
     DRI2ScreenPtr ds = DRI2GetScreen(pScreen);
 
-    if (ds == NULL || drmAuthMagic(ds->fd, magic))
-       return FALSE;
+    if (ds == NULL)
+    return FALSE;
+
+    if (ds->AuthMagic) {
+        if ((*ds->AuthMagic)(ds->fd, magic))
+            return FALSE;
+    }
+    else if (drmAuthMagic(ds->fd, magic))
+        return FALSE;
 
     return TRUE;
 }
@@ -821,6 +829,7 @@ DRI2ScreenInit(ScreenPtr pScreen, DRI2InfoPtr info)
     ds->CreateBuffer   = info->CreateBuffer;
     ds->DestroyBuffer  = info->DestroyBuffer;
     ds->CopyRegion     = info->CopyRegion;
+    ds->AuthMagic      = info->AuthMagic;
 
     if (info->version >= 4) {
        ds->ScheduleSwap = info->ScheduleSwap;
diff --git a/hw/xfree86/dri2/dri2.h b/hw/xfree86/dri2/dri2.h
index dd59297..0bec2c8 100644
--- a/hw/xfree86/dri2/dri2.h
+++ b/hw/xfree86/dri2/dri2.h
@@ -63,6 +63,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
  *
@@ -152,7 +154,7 @@ typedef int         (*DRI2ScheduleWaitMSCProcPtr)(ClientPtr 
client,
 /**
  * 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 */
@@ -167,6 +169,7 @@ typedef struct {
     DRI2ScheduleSwapProcPtr    ScheduleSwap;
     DRI2GetMSCProcPtr          GetMSC;
     DRI2ScheduleWaitMSCProcPtr ScheduleWaitMSC;
+    DRI2AuthMagicProcPtr               AuthMagic;
 }  DRI2InfoRec, *DRI2InfoPtr;
 
 extern _X_EXPORT int DRI2EventBase;
-- 
1.6.0.4

_______________________________________________
xorg-devel mailing list
[email protected]
http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to