xfree86: use screen privates for Xv offscreen images.
This replaces a globally-allocated array that depended on MAXSCREENS. Signed-off-by: Jamey Sharp <jamey@minilop.net> Acked-by: Tiago Vignatti <tiago.vignatti@nokia.com>
This commit is contained in:
parent
35d208125f
commit
7c9733d063
|
@ -186,7 +186,9 @@ typedef struct {
|
||||||
int num;
|
int num;
|
||||||
} OffscreenImageRec;
|
} OffscreenImageRec;
|
||||||
|
|
||||||
static OffscreenImageRec OffscreenImages[MAXSCREENS];
|
static int OffscreenPrivateKeyIndex;
|
||||||
|
static DevPrivateKey OffscreenPrivateKey = &OffscreenPrivateKeyIndex;
|
||||||
|
#define GetOffscreenImage(pScreen) ((OffscreenImageRec *) dixLookupPrivate(&(pScreen)->devPrivates, OffscreenPrivateKey))
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
xf86XVRegisterOffscreenImages(
|
xf86XVRegisterOffscreenImages(
|
||||||
|
@ -194,9 +196,15 @@ xf86XVRegisterOffscreenImages(
|
||||||
XF86OffscreenImagePtr images,
|
XF86OffscreenImagePtr images,
|
||||||
int num
|
int num
|
||||||
){
|
){
|
||||||
OffscreenImages[pScreen->myNum].num = num;
|
OffscreenImageRec *OffscreenImage;
|
||||||
OffscreenImages[pScreen->myNum].images = images;
|
if(!dixRequestPrivate(OffscreenPrivateKey, sizeof(OffscreenImageRec)) ||
|
||||||
|
!(OffscreenImage = GetOffscreenImage(pScreen)))
|
||||||
|
/* Every X.org driver assumes this function always succeeds, so
|
||||||
|
* just die on allocation failure. */
|
||||||
|
FatalError("Could not allocate private storage for XV offscreen images.\n");
|
||||||
|
|
||||||
|
OffscreenImage->num = num;
|
||||||
|
OffscreenImage->images = images;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -205,8 +213,9 @@ xf86XVQueryOffscreenImages(
|
||||||
ScreenPtr pScreen,
|
ScreenPtr pScreen,
|
||||||
int *num
|
int *num
|
||||||
){
|
){
|
||||||
*num = OffscreenImages[pScreen->myNum].num;
|
OffscreenImageRec *OffscreenImage = GetOffscreenImage(pScreen);
|
||||||
return OffscreenImages[pScreen->myNum].images;
|
*num = OffscreenImage->num;
|
||||||
|
return OffscreenImage->images;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1177,9 +1186,6 @@ xf86XVCloseScreen(int i, ScreenPtr pScreen)
|
||||||
XvAdaptorPtr pa;
|
XvAdaptorPtr pa;
|
||||||
int c;
|
int c;
|
||||||
|
|
||||||
/* Clear offscreen images */
|
|
||||||
memset(&OffscreenImages[pScreen->myNum], 0, sizeof(OffscreenImages[0]));
|
|
||||||
|
|
||||||
if(!ScreenPriv) return TRUE;
|
if(!ScreenPriv) return TRUE;
|
||||||
|
|
||||||
if(ScreenPriv->videoGC) {
|
if(ScreenPriv->videoGC) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user