[gimp] app: make sure the display is not rotated by a very small angle



commit 7ddf40b78b8b55ccd3fba3dc9a8dbb15b957f370
Author: Michael Natterer <mitch gimp org>
Date:   Thu Jul 25 12:45:21 2019 +0200

    app: make sure the display is not rotated by a very small angle
    
    gimp_display_shell_rotate_update_transform(): reliably set rotation to
    0.0 using an epsilon of 1e-3.

 app/display/gimpdisplayshell-rotate.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)
---
diff --git a/app/display/gimpdisplayshell-rotate.c b/app/display/gimpdisplayshell-rotate.c
index 59e71c1134..2049ba2dc9 100644
--- a/app/display/gimpdisplayshell-rotate.c
+++ b/app/display/gimpdisplayshell-rotate.c
@@ -36,6 +36,9 @@
 #include "gimpdisplayshell-transform.h"
 
 
+#define ANGLE_EPSILON 1e-3
+
+
 /*  local function prototypes  */
 
 static void   gimp_display_shell_save_viewport_center    (GimpDisplayShell *shell,
@@ -168,8 +171,12 @@ gimp_display_shell_rotate_update_transform (GimpDisplayShell *shell)
 {
   g_return_if_fail (GIMP_IS_DISPLAY_SHELL (shell));
 
-  g_free (shell->rotate_transform);
-  g_free (shell->rotate_untransform);
+  g_clear_pointer (&shell->rotate_transform,   g_free);
+  g_clear_pointer (&shell->rotate_untransform, g_free);
+
+  if (fabs (shell->rotate_angle)         < ANGLE_EPSILON ||
+      fabs (360.0 - shell->rotate_angle) < ANGLE_EPSILON)
+    shell->rotate_angle = 0.0;
 
   if ((shell->rotate_angle != 0.0 ||
        shell->flip_horizontally   ||
@@ -205,11 +212,6 @@ gimp_display_shell_rotate_update_transform (GimpDisplayShell *shell)
       *shell->rotate_untransform = *shell->rotate_transform;
       cairo_matrix_invert (shell->rotate_untransform);
     }
-  else
-    {
-      shell->rotate_transform   = NULL;
-      shell->rotate_untransform = NULL;
-    }
 }
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]