[gimp] app: fix alignment of generic pixel buffers



commit a90f59d9612a6ab6f945a761a858bec76d33cded
Author: Ell <ell_se yahoo com>
Date:   Wed May 20 08:49:42 2020 +0300

    app: fix alignment of generic pixel buffers
    
    Wherever we store arbitrary-format colors in an opaque buffer, use
    double for the buffer, instead of char, so that it has a strict-
    enough alignment to handle all our used pixel formats.

 app/core/gimppickable.c             | 2 +-
 app/display/gimpcursorview.c        | 2 +-
 app/tools/gimpcolortool.c           | 2 +-
 app/widgets/gimpcolorframe.c        | 5 ++++-
 app/widgets/gimpcolorframe.h        | 2 +-
 app/widgets/gimpsamplepointeditor.c | 2 +-
 6 files changed, 9 insertions(+), 6 deletions(-)
---
diff --git a/app/core/gimppickable.c b/app/core/gimppickable.c
index eda368f30a..af0e2cf0b3 100644
--- a/app/core/gimppickable.c
+++ b/app/core/gimppickable.c
@@ -240,7 +240,7 @@ gimp_pickable_get_color_at (GimpPickable *pickable,
                             gint          y,
                             GimpRGB      *color)
 {
-  guchar pixel[32];
+  gdouble pixel[4];
 
   g_return_val_if_fail (GIMP_IS_PICKABLE (pickable), FALSE);
   g_return_val_if_fail (color != NULL, FALSE);
diff --git a/app/display/gimpcursorview.c b/app/display/gimpcursorview.c
index 888a1270c1..cc4392a667 100644
--- a/app/display/gimpcursorview.c
+++ b/app/display/gimpcursorview.c
@@ -724,7 +724,7 @@ gimp_cursor_view_cursor_idle (GimpCursorView *view)
       gboolean    in_image;
       gchar       buf[32];
       const Babl *sample_format;
-      guchar      pixel[32];
+      gdouble     pixel[4];
       GimpRGB     color;
       gdouble     xres;
       gdouble     yres;
diff --git a/app/tools/gimpcolortool.c b/app/tools/gimpcolortool.c
index 411c226d2c..9a4ff97ada 100644
--- a/app/tools/gimpcolortool.c
+++ b/app/tools/gimpcolortool.c
@@ -627,7 +627,7 @@ gimp_color_tool_pick (GimpColorTool      *tool,
 {
   GimpColorToolClass *klass;
   const Babl         *sample_format;
-  guchar              pixel[32];
+  gdouble             pixel[4];
   GimpRGB             color;
 
   klass = GIMP_COLOR_TOOL_GET_CLASS (tool);
diff --git a/app/widgets/gimpcolorframe.c b/app/widgets/gimpcolorframe.c
index 8b0114d2d7..e3ef3eab23 100644
--- a/app/widgets/gimpcolorframe.c
+++ b/app/widgets/gimpcolorframe.c
@@ -796,7 +796,10 @@ gimp_color_frame_update (GimpColorFrame *frame)
                     g_free (tmp);
 
                     if (! frame->sample_average)
-                      values[4] = g_strdup_printf ("%d", frame->pixel[0]);
+                      {
+                        values[4] = g_strdup_printf (
+                          "%d", ((guint8 *) frame->pixel)[0]);
+                      }
                   }
               }
           }
diff --git a/app/widgets/gimpcolorframe.h b/app/widgets/gimpcolorframe.h
index cf2812a4c3..90cb05b030 100644
--- a/app/widgets/gimpcolorframe.h
+++ b/app/widgets/gimpcolorframe.h
@@ -39,7 +39,7 @@ struct _GimpColorFrame
   gboolean            sample_valid;
   gboolean            sample_average;
   const Babl         *sample_format;
-  guchar              pixel[32];
+  gdouble             pixel[4];
   GimpRGB             color;
   gint                x;
   gint                y;
diff --git a/app/widgets/gimpsamplepointeditor.c b/app/widgets/gimpsamplepointeditor.c
index 7e18dcf1fe..d84911b080 100644
--- a/app/widgets/gimpsamplepointeditor.c
+++ b/app/widgets/gimpsamplepointeditor.c
@@ -551,7 +551,7 @@ gimp_sample_point_editor_update (GimpSamplePointEditor *editor)
         {
           GimpSamplePoint   *sample_point = list->data;
           const Babl        *format;
-          guchar             pixel[32];
+          gdouble            pixel[4];
           GimpRGB            color;
           GimpColorPickMode  pick_mode;
           gint               x;


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