[gtk/misc-speedups: 5/11] gsk: Optimize gsk_transform_to...
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/misc-speedups: 5/11] gsk: Optimize gsk_transform_to...
- Date: Sat, 24 Jul 2021 23:03:27 +0000 (UTC)
commit 0ef12193f97a91fee4a5566852be7569328eabe7
Author: Matthias Clasen <mclasen redhat com>
Date: Sat Jul 24 10:51:08 2021 -0400
gsk: Optimize gsk_transform_to...
Optimize these functions for the common cases.
gsk/gsktransform.c | 87 ++++++++++++++++++------------------------------------
1 file changed, 29 insertions(+), 58 deletions(-)
---
diff --git a/gsk/gsktransform.c b/gsk/gsktransform.c
index 38a1b598d3..b58eb55aad 100644
--- a/gsk/gsktransform.c
+++ b/gsk/gsktransform.c
@@ -1487,21 +1487,21 @@ gsk_transform_to_2d (GskTransform *self,
float *out_dx,
float *out_dy)
{
- if (self == NULL ||
- self->category < GSK_TRANSFORM_CATEGORY_2D)
+ *out_xx = 1.0f;
+ *out_yx = 0.0f;
+ *out_xy = 0.0f;
+ *out_yy = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+
+ if (self == NULL)
+ return;
+
+ if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D))
{
- if (self != NULL)
- {
- char *s = gsk_transform_to_string (self);
- g_warning ("Given transform \"%s\" is not a 2D transform.", s);
- g_free (s);
- }
- *out_xx = 1.0f;
- *out_yx = 0.0f;
- *out_xy = 0.0f;
- *out_yy = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
+ char *s = gsk_transform_to_string (self);
+ g_warning ("Given transform \"%s\" is not a 2D transform.", s);
+ g_free (s);
return;
}
@@ -1544,41 +1544,25 @@ gsk_transform_to_affine (GskTransform *self,
float *out_dx,
float *out_dy)
{
+ *out_scale_x = 1.0f;
+ *out_scale_y = 1.0f;
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+
if (self == NULL)
- {
- *out_scale_x = 1.0f;
- *out_scale_y = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- return;
- }
+ return;
if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_AFFINE))
{
char *s = gsk_transform_to_string (self);
g_warning ("Given transform \"%s\" is not an affine 2D transform.", s);
g_free (s);
-
- *out_scale_x = 1.0f;
- *out_scale_y = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
return;
}
- if (self->next != NULL)
- {
- gsk_transform_to_affine (self->next,
- out_scale_x, out_scale_y,
- out_dx, out_dy);
- }
- else
- {
- *out_scale_x = 1.0f;
- *out_scale_y = 1.0f;
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- }
+ gsk_transform_to_affine (self->next,
+ out_scale_x, out_scale_y,
+ out_dx, out_dy);
self->transform_class->apply_affine (self,
out_scale_x, out_scale_y,
@@ -1607,12 +1591,11 @@ gsk_transform_to_translate (GskTransform *self,
float *out_dx,
float *out_dy)
{
+ *out_dx = 0.0f;
+ *out_dy = 0.0f;
+
if (self == NULL)
- {
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- return;
- }
+ return;
if (G_UNLIKELY (self->category < GSK_TRANSFORM_CATEGORY_2D_TRANSLATE))
{
@@ -1620,24 +1603,12 @@ gsk_transform_to_translate (GskTransform *self,
g_warning ("Given transform \"%s\" is not an affine 2D translation.", s);
g_free (s);
- *out_dx = 0.0f;
- *out_dy = 0.0f;
return;
}
- if (self->next != NULL)
- {
- gsk_transform_to_translate (self->next,
- out_dx, out_dy);
- }
- else
- {
- *out_dx = 0.0f;
- *out_dy = 0.0f;
- }
+ gsk_transform_to_translate (self->next, out_dx, out_dy);
- self->transform_class->apply_translate (self,
- out_dx, out_dy);
+ self->transform_class->apply_translate (self, out_dx, out_dy);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]