Pass filter kernel size through transforms
This commit is contained in:
parent
1df02d7ddd
commit
16c093afd4
|
@ -111,6 +111,8 @@ struct _rrTransform {
|
|||
PictFilterPtr filter;
|
||||
xFixed *params;
|
||||
int nparams;
|
||||
int width;
|
||||
int height;
|
||||
};
|
||||
|
||||
struct _rrCrtc {
|
||||
|
|
|
@ -62,7 +62,9 @@ static Bool
|
|||
RRTransformSetFilter (RRTransformPtr dst,
|
||||
PictFilterPtr filter,
|
||||
xFixed *params,
|
||||
int nparams)
|
||||
int nparams,
|
||||
int width,
|
||||
int height)
|
||||
{
|
||||
xFixed *new_params;
|
||||
|
||||
|
@ -80,6 +82,8 @@ RRTransformSetFilter (RRTransformPtr dst,
|
|||
dst->filter = filter;
|
||||
dst->params = new_params;
|
||||
dst->nparams = nparams;
|
||||
dst->width = width;
|
||||
dst->height = height;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -87,7 +91,7 @@ static Bool
|
|||
RRTransformCopy (RRTransformPtr dst, RRTransformPtr src)
|
||||
{
|
||||
if (!RRTransformSetFilter (dst, src->filter,
|
||||
src->params, src->nparams))
|
||||
src->params, src->nparams, src->width, src->height))
|
||||
return FALSE;
|
||||
dst->transform = src->transform;
|
||||
dst->inverse = src->inverse;
|
||||
|
@ -602,6 +606,7 @@ RRCrtcTransformSet (RRCrtcPtr crtc,
|
|||
int nparams)
|
||||
{
|
||||
PictFilterPtr filter = NULL;
|
||||
int width = 0, height = 0;
|
||||
|
||||
if (!PictureTransformIsInverse (transform, inverse))
|
||||
return BadMatch;
|
||||
|
@ -615,9 +620,13 @@ RRCrtcTransformSet (RRCrtcPtr crtc,
|
|||
if (filter->ValidateParams)
|
||||
{
|
||||
if (!filter->ValidateParams (crtc->pScreen, filter->id,
|
||||
params, nparams))
|
||||
params, nparams, &width, &height))
|
||||
return BadMatch;
|
||||
}
|
||||
else {
|
||||
width = filter->width;
|
||||
height = filter->height;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -625,7 +634,7 @@ RRCrtcTransformSet (RRCrtcPtr crtc,
|
|||
return BadMatch;
|
||||
}
|
||||
if (!RRTransformSetFilter (&crtc->client_pending_transform,
|
||||
filter, params, nparams))
|
||||
filter, params, nparams, width, height))
|
||||
return BadAlloc;
|
||||
|
||||
crtc->client_pending_transform.transform = *transform;
|
||||
|
@ -1037,12 +1046,11 @@ ProcRRSetCrtcConfig (ClientPtr client)
|
|||
int source_height;
|
||||
PictTransform transform, inverse;
|
||||
|
||||
if (!RRComputeTransform (mode, stuff->rotation,
|
||||
stuff->x, stuff->y,
|
||||
&crtc->client_pending_transform.transform,
|
||||
&crtc->client_pending_transform.inverse,
|
||||
&transform, &inverse))
|
||||
return BadMatch;
|
||||
RRComputeTransform (mode, stuff->rotation,
|
||||
stuff->x, stuff->y,
|
||||
&crtc->client_pending_transform.transform,
|
||||
&crtc->client_pending_transform.inverse,
|
||||
&transform, &inverse);
|
||||
|
||||
RRModeGetScanoutSize (mode, &transform, &source_width, &source_height);
|
||||
if (stuff->x + source_width > pScreen->width)
|
||||
|
|
Loading…
Reference in New Issue
Block a user