Commit 4caad34c authored by Dave Airlie's avatar Dave Airlie

dix: add unattached list for attaching screens to initially. (v1.1)

This list is meant for attaching unbound gpu screens to initially,
before the client side rebinds them.

v1.1: add another assert in the add path.
Reviewed-by: Keith Packard's avatarKeith Packard <keithp@keithp.com>
Reviewed-by: Adam Jackson's avatarAdam Jackson <ajax@redhat.com>
Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
parent 9b5cf2ed
......@@ -3742,6 +3742,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
......@@ -3889,3 +3891,21 @@ RemoveGPUScreen(ScreenPtr pScreen)
free(pScreen);
}
void
AttachUnboundGPU(ScreenPtr pScreen, ScreenPtr new)
{
assert(new->isGPU);
assert(!new->current_master);
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;
}
......@@ -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 */
......@@ -479,6 +479,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
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment