[PATCH 5/5] xfree86: vgaarb: hide arbiter device inside ddx privates
Tiago Vignatti
tiago.vignatti at nokia.com
Tue May 25 05:04:30 PDT 2010
API break.
Signed-off-by: Tiago Vignatti <tiago.vignatti at nokia.com>
---
hw/xfree86/common/xf86VGAarbiter.c | 28 ++++++++++++++++++++++------
hw/xfree86/common/xf86VGAarbiterPriv.h | 11 -----------
hw/xfree86/common/xf86str.h | 1 -
3 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/hw/xfree86/common/xf86VGAarbiter.c b/hw/xfree86/common/xf86VGAarbiter.c
index 776946a..3e388ea 100644
--- a/hw/xfree86/common/xf86VGAarbiter.c
+++ b/hw/xfree86/common/xf86VGAarbiter.c
@@ -62,6 +62,10 @@ static miPointerSpriteFuncRec VGAarbiterSpriteFuncs = {
VGAarbiterDeviceCursorInitialize, VGAarbiterDeviceCursorCleanup
};
+static int xf86VGAarbiterPrivateIndex;
+#define XF86_VGAARB_DEV_PTR(p) \
+ ((struct pci_device *) ((p)->privates[xf86VGAarbiterPrivateIndex].ptr))
+
static int VGAarbiterKeyIndex;
static DevPrivateKey VGAarbiterScreenKey = &VGAarbiterKeyIndex;
static int VGAarbiterGCIndex;
@@ -90,7 +94,7 @@ xf86VGAarbiterLock(ScrnInfoPtr pScrn)
{
if (vga_no_arb)
return;
- pci_device_vgaarb_set_target(pScrn->vgaDev);
+ pci_device_vgaarb_set_target(XF86_VGAARB_DEV_PTR(pScrn));
pci_device_vgaarb_lock();
}
@@ -111,7 +115,7 @@ Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen)
if (vga_no_arb)
return TRUE;
- pci_device_vgaarb_get_info(pScrn->vgaDev, &vga_count, &rsrc_decodes);
+ pci_device_vgaarb_get_info(XF86_VGAARB_DEV_PTR(pScrn), &vga_count, &rsrc_decodes);
if (vga_count > 1) {
if (rsrc_decodes) {
return FALSE;
@@ -123,7 +127,6 @@ Bool xf86VGAarbiterAllowDRI(ScreenPtr pScreen)
void
xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn)
{
- struct pci_device *dev;
EntityPtr pEnt;
if (vga_no_arb)
@@ -133,8 +136,8 @@ xf86VGAarbiterScrnInit(ScrnInfoPtr pScrn)
if (pEnt->bus.type != BUS_PCI)
return;
- dev = pEnt->bus.id.pci;
- pScrn->vgaDev = dev;
+ xf86VGAarbiterPrivateIndex = xf86AllocateScrnInfoPrivateIndex();
+ pScrn->privates[xf86VGAarbiterPrivateIndex].ptr = pEnt->bus.id.pci;
}
void
@@ -142,7 +145,7 @@ xf86VGAarbiterDeviceDecodes(ScrnInfoPtr pScrn, int rsrc)
{
if (vga_no_arb)
return;
- pci_device_vgaarb_set_target(pScrn->vgaDev);
+ pci_device_vgaarb_set_target(XF86_VGAARB_DEV_PTR(pScrn));
pci_device_vgaarb_decodes(rsrc);
}
@@ -215,6 +218,19 @@ xf86VGAarbiterWrapFunctions(void)
return TRUE;
}
+static inline void
+VGAGet(ScreenPtr pScreen) {
+ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum];
+
+ pci_device_vgaarb_set_target(XF86_VGAARB_DEV_PTR(pScrn));
+ pci_device_vgaarb_lock();
+}
+
+static inline void
+VGAPut(void) {
+ pci_device_vgaarb_unlock();
+}
+
/* Screen funcs */
static Bool
VGAarbiterCloseScreen (int i, ScreenPtr pScreen)
diff --git a/hw/xfree86/common/xf86VGAarbiterPriv.h b/hw/xfree86/common/xf86VGAarbiterPriv.h
index 2920fb5..10c3663 100644
--- a/hw/xfree86/common/xf86VGAarbiterPriv.h
+++ b/hw/xfree86/common/xf86VGAarbiterPriv.h
@@ -93,17 +93,6 @@
(VGAarbiterGCPtr)dixLookupPrivate(&(x)->devPrivates, VGAarbiterGCKey);\
(x)->ops = pGCPriv->wrapOps; (x)->funcs = pGCPriv->wrapFuncs;
-static inline void
-VGAGet(ScreenPtr pScreen) {
- pci_device_vgaarb_set_target(xf86Screens[pScreen->myNum]->vgaDev);
- pci_device_vgaarb_lock();
-}
-
-static inline void
-VGAPut(void) {
- pci_device_vgaarb_unlock();
-}
-
typedef struct _VGAarbiterScreen {
CreateGCProcPtr CreateGC;
CloseScreenProcPtr CloseScreen;
diff --git a/hw/xfree86/common/xf86str.h b/hw/xfree86/common/xf86str.h
index 22f0261..d87baf9 100644
--- a/hw/xfree86/common/xf86str.h
+++ b/hw/xfree86/common/xf86str.h
@@ -781,7 +781,6 @@ typedef struct _ScrnInfoRec {
int reservedInt[NUM_RESERVED_INTS];
int * entityInstanceList;
- struct pci_device *vgaDev;
pointer reservedPtr[NUM_RESERVED_POINTERS];
--
1.6.0.4
More information about the xorg-devel
mailing list