Set sprite transforms from RRSetCrtcConfigs
These were getting ignored. Signed-off-by: Keith Packard <keithp@keithp.com> Reviewed-by: Aaron Plattner <aplattner@nvidia.com>
This commit is contained in:
parent
96b4d4787b
commit
a88d70fb20
|
@ -1819,8 +1819,8 @@ xf86RRConvertCrtcConfig(xf86CrtcSetConfigPtr xf86_config,
|
||||||
return FALSE;
|
return FALSE;
|
||||||
for (o = 0; o < rr_config->numOutputs; o++)
|
for (o = 0; o < rr_config->numOutputs; o++)
|
||||||
xf86_config->outputs[o] = rr_config->outputs[o]->devPrivate;
|
xf86_config->outputs[o] = rr_config->outputs[o]->devPrivate;
|
||||||
xf86_config->sprite_position_transform = rr_config->sprite_position_transform;
|
xf86_config->sprite_position_transform = rr_config->sprite_position_f_transform;
|
||||||
xf86_config->sprite_image_transform = rr_config->sprite_image_transform;
|
xf86_config->sprite_image_transform = rr_config->sprite_image_f_transform;
|
||||||
xf86_config->pixmap = rr_config->pixmap;
|
xf86_config->pixmap = rr_config->pixmap;
|
||||||
xf86_config->pixmap_x = rr_config->pixmap_x;
|
xf86_config->pixmap_x = rr_config->pixmap_x;
|
||||||
xf86_config->pixmap_y = rr_config->pixmap_y;
|
xf86_config->pixmap_y = rr_config->pixmap_y;
|
||||||
|
|
|
@ -60,14 +60,21 @@ miRRSetCrtcConfig(RRCrtcConfigPtr crtc_config)
|
||||||
x = crtc_config->pixmap_x;
|
x = crtc_config->pixmap_x;
|
||||||
y = crtc_config->pixmap_y;
|
y = crtc_config->pixmap_y;
|
||||||
}
|
}
|
||||||
return RRCrtcSet(crtc_config->crtc,
|
if (!RRCrtcSet(crtc_config->crtc,
|
||||||
crtc_config->mode,
|
crtc_config->mode,
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
crtc_config->rotation,
|
crtc_config->rotation,
|
||||||
crtc_config->numOutputs,
|
crtc_config->numOutputs,
|
||||||
crtc_config->outputs,
|
crtc_config->outputs,
|
||||||
crtc_config->pixmap);
|
crtc_config->pixmap))
|
||||||
|
return FALSE;
|
||||||
|
RRCrtcSpriteTransformSet(crtc_config->crtc,
|
||||||
|
&crtc_config->sprite_position_transform,
|
||||||
|
&crtc_config->sprite_image_transform,
|
||||||
|
&crtc_config->sprite_position_f_transform,
|
||||||
|
&crtc_config->sprite_image_f_transform);
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bool
|
Bool
|
||||||
|
|
|
@ -154,8 +154,10 @@ struct _rrCrtcConfig {
|
||||||
Rotation rotation;
|
Rotation rotation;
|
||||||
int numOutputs;
|
int numOutputs;
|
||||||
RROutputPtr *outputs;
|
RROutputPtr *outputs;
|
||||||
struct pict_f_transform sprite_position_transform;
|
PictTransform sprite_position_transform;
|
||||||
struct pict_f_transform sprite_image_transform;
|
PictTransform sprite_image_transform;
|
||||||
|
struct pict_f_transform sprite_position_f_transform;
|
||||||
|
struct pict_f_transform sprite_image_f_transform;
|
||||||
PixmapPtr pixmap;
|
PixmapPtr pixmap;
|
||||||
int pixmap_x, pixmap_y;
|
int pixmap_x, pixmap_y;
|
||||||
};
|
};
|
||||||
|
|
|
@ -430,8 +430,10 @@ RRCrtcCurrentConfig(RRCrtcPtr crtc,
|
||||||
if (!crtc_config->outputs)
|
if (!crtc_config->outputs)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
memcpy(crtc_config->outputs, crtc->outputs, crtc->numOutputs * sizeof (RROutputPtr));
|
memcpy(crtc_config->outputs, crtc->outputs, crtc->numOutputs * sizeof (RROutputPtr));
|
||||||
crtc_config->sprite_position_transform = crtc->client_sprite_f_position_transform;
|
crtc_config->sprite_position_transform = crtc->client_sprite_position_transform;
|
||||||
crtc_config->sprite_image_transform = crtc->client_sprite_f_image_transform;
|
crtc_config->sprite_image_transform = crtc->client_sprite_image_transform;
|
||||||
|
crtc_config->sprite_position_f_transform = crtc->client_sprite_f_position_transform;
|
||||||
|
crtc_config->sprite_image_f_transform = crtc->client_sprite_f_image_transform;
|
||||||
|
|
||||||
/* XXX add pixmap stuff */
|
/* XXX add pixmap stuff */
|
||||||
crtc_config->pixmap = NULL;
|
crtc_config->pixmap = NULL;
|
||||||
|
@ -718,8 +720,8 @@ RRScreenCoversCrtc(RRScreenConfigPtr screen_config,
|
||||||
crtc_config->mode->mode.width, crtc_config->mode->mode.height,
|
crtc_config->mode->mode.width, crtc_config->mode->mode.height,
|
||||||
crtc_config->rotation,
|
crtc_config->rotation,
|
||||||
client_transform,
|
client_transform,
|
||||||
&crtc_config->sprite_position_transform,
|
&crtc_config->sprite_position_f_transform,
|
||||||
&crtc_config->sprite_image_transform,
|
&crtc_config->sprite_image_f_transform,
|
||||||
NULL, &f_transform, NULL, NULL, NULL, NULL);
|
NULL, &f_transform, NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
RRModeGetScanoutSize (crtc_config->mode, &f_transform,
|
RRModeGetScanoutSize (crtc_config->mode, &f_transform,
|
||||||
|
@ -1469,15 +1471,6 @@ ProcRRGetCrtcTransform (ClientPtr client)
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
pixman_f_transform_from_xRenderTransform(struct pixman_f_transform *f_transform,
|
|
||||||
xRenderTransform *x_transform)
|
|
||||||
{
|
|
||||||
struct pixman_transform transform;
|
|
||||||
PictTransform_from_xRenderTransform(&transform, x_transform);
|
|
||||||
pixman_f_transform_from_pixman_transform(f_transform, &transform);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
RRConvertCrtcConfig(ClientPtr client, ScreenPtr screen,
|
RRConvertCrtcConfig(ClientPtr client, ScreenPtr screen,
|
||||||
RRScreenConfigPtr screen_config,
|
RRScreenConfigPtr screen_config,
|
||||||
|
@ -1594,10 +1587,14 @@ RRConvertCrtcConfig(ClientPtr client, ScreenPtr screen,
|
||||||
config->rotation = x->rotation;
|
config->rotation = x->rotation;
|
||||||
config->numOutputs = x->nOutput;
|
config->numOutputs = x->nOutput;
|
||||||
config->outputs = outputs;
|
config->outputs = outputs;
|
||||||
pixman_f_transform_from_xRenderTransform(&config->sprite_position_transform,
|
PictTransform_from_xRenderTransform(&config->sprite_position_transform,
|
||||||
&x->spritePositionTransform);
|
&x->spritePositionTransform);
|
||||||
pixman_f_transform_from_xRenderTransform(&config->sprite_image_transform,
|
PictTransform_from_xRenderTransform(&config->sprite_image_transform,
|
||||||
&x->spriteImageTransform);
|
&x->spriteImageTransform);
|
||||||
|
pixman_f_transform_from_pixman_transform(&config->sprite_position_f_transform,
|
||||||
|
&config->sprite_position_transform);
|
||||||
|
pixman_f_transform_from_pixman_transform(&config->sprite_image_f_transform,
|
||||||
|
&config->sprite_image_transform);
|
||||||
config->pixmap = pixmap;
|
config->pixmap = pixmap;
|
||||||
config->pixmap_x = x->xPixmap;
|
config->pixmap_x = x->xPixmap;
|
||||||
config->pixmap_y = x->yPixmap;
|
config->pixmap_y = x->yPixmap;
|
||||||
|
|
Loading…
Reference in New Issue