clutter/paint-volume: Union paint volumes correctly using Graphene

Since commit d2f8a30625 we use Graphene to union paint volumes, it
turns out a quite severe issue snuck in during review of that MR though:
Unioned paint volumes (so paint volumes of any actors with children) now
have negative heights. Once projected to 2d coordinates they luckily are
correct again, which is why everything is still working.

The problem is that obvious once looking closer: For the y coordinates
of the unioned paint volume we confused the maximum and the minimum
points and simply used the wrong coordinates to create the unioned paint
volume.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1827>
This commit is contained in:
Jonas Dreßler 2021-04-15 12:14:04 +02:00 committed by Marge Bot
parent a7c4e8cefa
commit cc912614c7

View File

@ -585,10 +585,10 @@ clutter_paint_volume_union (ClutterPaintVolume *pv,
graphene_box_get_min (&union_box, &min);
graphene_box_get_max (&union_box, &max);
graphene_point3d_init (&pv->vertices[0], min.x, max.y, min.z);
graphene_point3d_init (&pv->vertices[1], max.x, max.y, min.z);
graphene_point3d_init (&pv->vertices[3], min.x, min.y, min.z);
graphene_point3d_init (&pv->vertices[4], min.x, max.y, max.z);
graphene_point3d_init (&pv->vertices[0], min.x, min.y, min.z);
graphene_point3d_init (&pv->vertices[1], max.x, min.y, min.z);
graphene_point3d_init (&pv->vertices[3], min.x, max.y, min.z);
graphene_point3d_init (&pv->vertices[4], min.x, min.y, max.z);
if (pv->vertices[4].z == pv->vertices[0].z)
pv->is_2d = TRUE;