Merge remote-tracking branch 'airlied/for-keithp'
This commit is contained in:
commit
360fa7736b
|
@ -148,6 +148,10 @@ PixmapPtr PixmapShareToSlave(PixmapPtr pixmap, ScreenPtr slave)
|
||||||
pixmap->drawable.height, depth, 0,
|
pixmap->drawable.height, depth, 0,
|
||||||
pixmap->devKind, NULL);
|
pixmap->devKind, NULL);
|
||||||
|
|
||||||
|
/* have the slave pixmap take a reference on the master pixmap
|
||||||
|
later we destroy them both at the same time */
|
||||||
|
pixmap->refcnt++;
|
||||||
|
|
||||||
spix->master_pixmap = pixmap;
|
spix->master_pixmap = pixmap;
|
||||||
|
|
||||||
ret = slave->SetSharedPixmapBacking(spix, handle);
|
ret = slave->SetSharedPixmapBacking(spix, handle);
|
||||||
|
|
|
@ -409,6 +409,11 @@ DRI2DrawableGone(pointer p, XID id)
|
||||||
dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL);
|
dixSetPrivate(&pPixmap->devPrivates, dri2PixmapPrivateKey, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pPriv->prime_slave_pixmap) {
|
||||||
|
(*pPriv->prime_slave_pixmap->master_pixmap->drawable.pScreen->DestroyPixmap)(pPriv->prime_slave_pixmap->master_pixmap);
|
||||||
|
(*pPriv->prime_slave_pixmap->drawable.pScreen->DestroyPixmap)(pPriv->prime_slave_pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
if (pPriv->buffers != NULL) {
|
if (pPriv->buffers != NULL) {
|
||||||
for (i = 0; i < pPriv->bufferCount; i++)
|
for (i = 0; i < pPriv->bufferCount; i++)
|
||||||
destroy_buffer(pDraw, pPriv->buffers[i], pPriv->prime_id);
|
destroy_buffer(pDraw, pPriv->buffers[i], pPriv->prime_id);
|
||||||
|
@ -811,8 +816,9 @@ DrawablePtr DRI2UpdatePrime(DrawablePtr pDraw, DRI2BufferPtr pDest)
|
||||||
if (pPriv->prime_slave_pixmap->master_pixmap == mpix)
|
if (pPriv->prime_slave_pixmap->master_pixmap == mpix)
|
||||||
return &pPriv->prime_slave_pixmap->drawable;
|
return &pPriv->prime_slave_pixmap->drawable;
|
||||||
else {
|
else {
|
||||||
(*master->DestroyPixmap)(pPriv->prime_slave_pixmap->master_pixmap);
|
(*pPriv->prime_slave_pixmap->master_pixmap->drawable.pScreen->DestroyPixmap)(pPriv->prime_slave_pixmap->master_pixmap);
|
||||||
(*slave->DestroyPixmap)(pPriv->prime_slave_pixmap);
|
(*slave->DestroyPixmap)(pPriv->prime_slave_pixmap);
|
||||||
|
pPriv->prime_slave_pixmap = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue