Mesa (master): st/xorg: Move drm init to own function

Jakob Bornecrantz wallbraker at kemper.freedesktop.org
Tue Oct 20 17:08:25 UTC 2009


Module: Mesa
Branch: master
Commit: 478332b0c1f0198bc7063300d203c21e42796045
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=478332b0c1f0198bc7063300d203c21e42796045

Author: Jakob Bornecrantz <jakob at vmware.com>
Date:   Tue Oct 20 17:52:33 2009 +0200

st/xorg: Move drm init to own function

---

 src/gallium/state_trackers/xorg/xorg_driver.c |   65 ++++++++++++++-----------
 1 files changed, 36 insertions(+), 29 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_driver.c b/src/gallium/state_trackers/xorg/xorg_driver.c
index 7da1042..847647c 100644
--- a/src/gallium/state_trackers/xorg/xorg_driver.c
+++ b/src/gallium/state_trackers/xorg/xorg_driver.c
@@ -261,6 +261,37 @@ static const xf86CrtcConfigFuncsRec crtc_config_funcs = {
 };
 
 static Bool
+InitDRM(ScrnInfoPtr pScrn)
+{
+    modesettingPtr ms = modesettingPTR(pScrn);
+
+    /* deal with server regeneration */
+    if (ms->fd < 0) {
+	char *BusID;
+
+	BusID = xalloc(64);
+	sprintf(BusID, "PCI:%d:%d:%d",
+		((ms->PciInfo->domain << 8) | ms->PciInfo->bus),
+		ms->PciInfo->dev, ms->PciInfo->func
+	    );
+
+	ms->fd = drmOpen(NULL, BusID);
+
+	if (ms->fd < 0)
+	    return FALSE;
+    }
+
+    if (!ms->api) {
+	ms->api = drm_api_create();
+
+	if (!ms->api)
+	    return FALSE;
+    }
+
+    return TRUE;
+}
+
+static Bool
 PreInit(ScrnInfoPtr pScrn, int flags)
 {
     xf86CrtcConfigPtr xf86_config;
@@ -268,7 +299,6 @@ PreInit(ScrnInfoPtr pScrn, int flags)
     rgb defaultWeight = { 0, 0, 0 };
     EntityInfoPtr pEnt;
     EntPtr msEnt = NULL;
-    char *BusID;
     int max_width, max_height;
 
     if (pScrn->numEntities != 1)
@@ -317,16 +347,9 @@ PreInit(ScrnInfoPtr pScrn, int flags)
 	}
     }
 
-    BusID = xalloc(64);
-    sprintf(BusID, "PCI:%d:%d:%d",
-	    ((ms->PciInfo->domain << 8) | ms->PciInfo->bus),
-	    ms->PciInfo->dev, ms->PciInfo->func
-	);
-
-    ms->api = drm_api_create();
-    ms->fd = drmOpen(NULL, BusID);
-
-    if (ms->fd < 0)
+    ms->fd = -1;
+    ms->api = NULL;
+    if (!InitDRM(pScrn))
 	return FALSE;
 
     pScrn->monitor = pScrn->confScreen->monitor;
@@ -525,24 +548,8 @@ ScreenInit(int scrnIndex, ScreenPtr pScreen, int argc, char **argv)
     modesettingPtr ms = modesettingPTR(pScrn);
     VisualPtr visual;
 
-    /* deal with server regeneration */
-    if (ms->fd < 0) {
-	char *BusID;
-
-	BusID = xalloc(64);
-	sprintf(BusID, "PCI:%d:%d:%d",
-		((ms->PciInfo->domain << 8) | ms->PciInfo->bus),
-		ms->PciInfo->dev, ms->PciInfo->func
-	    );
-
-	ms->fd = drmOpen(NULL, BusID);
-
-	if (ms->fd < 0)
-	    return FALSE;
-    }
-
-    if (!ms->api)
-	ms->api = drm_api_create();
+    if (!InitDRM(pScrn))
+	return FALSE;
 
     if (!ms->screen) {
 	ms->screen = ms->api->create_screen(ms->api, ms->fd, NULL);




More information about the mesa-commit mailing list