cogl/matrix: Get value using graphene matrix

Internally, a graphene_matrix_t representing the same transform that
of a CoglMatrix is the same matrix but transposed, so in order to get
the same element given a column and row for a matrix as if it would
be located in Cogl, it is necessary to swap the row and column when
retrieving it from the graphene matrix.

https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1439
This commit is contained in:
Georges Basile Stavracas Neto 2020-09-10 14:45:22 -03:00
parent 45f3e15b63
commit a96f0d7537

View File

@ -273,19 +273,6 @@ cogl_debug_matrix_print (const CoglMatrix *matrix)
_cogl_matrix_prefix_print ("", matrix); _cogl_matrix_prefix_print ("", matrix);
} }
/*
* References an element of 4x4 matrix.
*
* @m matrix array.
* @c column of the desired element.
* @r row of the desired element.
*
* Returns: value of the desired element.
*
* Calculate the linear storage index of the element and references it.
*/
#define MAT(m,r,c) (m)[(c)*4+(r)]
/* /*
* Compute inverse of a transformation matrix. * Compute inverse of a transformation matrix.
* *
@ -729,7 +716,10 @@ cogl_matrix_get_value (const CoglMatrix *matrix,
unsigned int row, unsigned int row,
unsigned int column) unsigned int column)
{ {
return MAT ((float *)matrix, row, column); graphene_matrix_t m;
cogl_matrix_to_graphene_matrix (matrix, &m);
return graphene_matrix_get_value (&m, column, row);
} }
void void