[PATCH 12/36] dix: add unattached list for attaching screens to initially.
Dave Airlie
airlied at gmail.com
Mon Jul 2 03:13:05 PDT 2012
From: Dave Airlie <airlied at redhat.com>
This list is meant for attaching unbound gpu screens to initially,
before the client side rebinds them.
Signed-off-by: Dave Airlie <airlied at redhat.com>
---
dix/dispatch.c | 19 +++++++++++++++++++
include/screenint.h | 5 +++++
include/scrnintstr.h | 6 ++++++
3 files changed, 30 insertions(+)
diff --git a/dix/dispatch.c b/dix/dispatch.c
index b0fc531..b9da233 100644
--- a/dix/dispatch.c
+++ b/dix/dispatch.c
@@ -3740,6 +3740,8 @@ static int init_screen(ScreenPtr pScreen, int i, Bool gpu)
pScreen->ClipNotify = 0; /* for R4 ddx compatibility */
pScreen->CreateScreenResources = 0;
+ xorg_list_init(&pScreen->unattached_list);
+
/*
* This loop gets run once for every Screen that gets added,
* but thats ok. If the ddx layer initializes the formats
@@ -3888,3 +3890,20 @@ RemoveGPUScreen(ScreenPtr pScreen)
free(pScreen);
}
+
+void
+AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new)
+{
+ assert(new->isGPU);
+ xorg_list_add(&new->unattached_head, &pScreen->unattached_list);
+ new->current_master = pScreen;
+}
+
+void
+DetachUnboundGPU(ScreenPtr slave)
+{
+ assert(slave->isGPU);
+ xorg_list_del(&slave->unattached_head);
+ slave->current_master = NULL;
+}
+
diff --git a/include/screenint.h b/include/screenint.h
index 8205f63..c0c60ef 100644
--- a/include/screenint.h
+++ b/include/screenint.h
@@ -71,6 +71,11 @@ extern _X_EXPORT int AddGPUScreen(Bool (*pfnInit) (ScreenPtr /*pScreen */ ,
extern _X_EXPORT void RemoveGPUScreen(ScreenPtr pScreen);
+extern _X_EXPORT void
+AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new);
+extern _X_EXPORT void
+DetachUnboundGPU(ScreenPtr unbound);
+
typedef struct _ColormapRec *ColormapPtr;
#endif /* SCREENINT_H */
diff --git a/include/scrnintstr.h b/include/scrnintstr.h
index 840c3ac..8a21c2c 100644
--- a/include/scrnintstr.h
+++ b/include/scrnintstr.h
@@ -477,6 +477,12 @@ typedef struct _Screen {
Bool canDoBGNoneRoot;
Bool isGPU;
+
+ struct xorg_list unattached_list;
+ struct xorg_list unattached_head;
+
+ ScreenPtr current_master;
+
} ScreenRec;
static inline RegionPtr
--
1.7.10.2
More information about the xorg-devel
mailing list