From a96f0d7537f9ba6825721f31efcf0bd2980de66b Mon Sep 17 00:00:00 2001 From: Georges Basile Stavracas Neto Date: Thu, 10 Sep 2020 14:45:22 -0300 Subject: [PATCH] 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 --- cogl/cogl/cogl-matrix.c | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/cogl/cogl/cogl-matrix.c b/cogl/cogl/cogl-matrix.c index 623a93941..8058538c3 100644 --- a/cogl/cogl/cogl-matrix.c +++ b/cogl/cogl/cogl-matrix.c @@ -273,19 +273,6 @@ cogl_debug_matrix_print (const CoglMatrix *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. * @@ -729,7 +716,10 @@ cogl_matrix_get_value (const CoglMatrix *matrix, unsigned int row, 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