diff --git a/app/display/gimpdisplayshell-profile.c b/app/display/gimpdisplayshell-profile.c index ad070ee372..5b377d1653 100644 --- a/app/display/gimpdisplayshell-profile.c +++ b/app/display/gimpdisplayshell-profile.c @@ -91,7 +91,7 @@ gimp_display_shell_profile_update (GimpDisplayShell *shell) src_format = gimp_pickable_get_format (GIMP_PICKABLE (image)); if (gimp_display_shell_has_filter (shell)) - dest_format = babl_format ("R'G'B'A float"); + dest_format = shell->filter_format; else dest_format = babl_format ("R'G'B'A u8"); diff --git a/app/display/gimpdisplayshell-render.c b/app/display/gimpdisplayshell-render.c index d8f8f1bcc2..9936876bdf 100644 --- a/app/display/gimpdisplayshell-render.c +++ b/app/display/gimpdisplayshell-render.c @@ -63,7 +63,6 @@ gimp_display_shell_render (GimpDisplayShell *shell, #ifdef USE_NODE_BLIT GeglNode *node; #endif - const Babl *filter_format = babl_format ("R'G'B'A float"); gdouble scale_x = 1.0; gdouble scale_y = 1.0; gdouble buffer_scale = 1.0; @@ -177,14 +176,14 @@ gimp_display_shell_render (GimpDisplayShell *shell, gint h = GIMP_DISPLAY_RENDER_BUF_HEIGHT * GIMP_DISPLAY_RENDER_MAX_SCALE; shell->filter_data = - gegl_malloc (w * h * babl_format_get_bytes_per_pixel (filter_format)); + gegl_malloc (w * h * babl_format_get_bytes_per_pixel (shell->filter_format)); shell->filter_stride = - w * babl_format_get_bytes_per_pixel (filter_format); + w * babl_format_get_bytes_per_pixel (shell->filter_format); shell->filter_buffer = gegl_buffer_linear_new_from_data (shell->filter_data, - filter_format, + shell->filter_format, GEGL_RECTANGLE (0, 0, w, h), GEGL_AUTO_ROWSTRIDE, (GDestroyNotify) gegl_free, @@ -255,7 +254,7 @@ gimp_display_shell_render (GimpDisplayShell *shell, GEGL_RECTANGLE (scaled_x, scaled_y, scaled_width, scaled_height), buffer_scale, - filter_format, + shell->filter_format, shell->filter_data, shell->filter_stride, GEGL_ABYSS_CLAMP); #else @@ -263,7 +262,7 @@ gimp_display_shell_render (GimpDisplayShell *shell, buffer_scale, GEGL_RECTANGLE (scaled_x, scaled_y, scaled_width, scaled_height), - filter_format, + shell->filter_format, shell->filter_data, shell->filter_stride, GEGL_BLIT_CACHE); #endif diff --git a/app/display/gimpdisplayshell.c b/app/display/gimpdisplayshell.c index 69c0113067..edac90709b 100644 --- a/app/display/gimpdisplayshell.c +++ b/app/display/gimpdisplayshell.c @@ -336,6 +336,8 @@ gimp_display_shell_init (GimpDisplayShell *shell) shell->cursor_modifier = GIMP_CURSOR_MODIFIER_NONE; shell->override_cursor = (GimpCursorType) -1; + shell->filter_format = babl_format ("R'G'B'A float"); + shell->motion_buffer = gimp_motion_buffer_new (); g_signal_connect (shell->motion_buffer, "stroke", diff --git a/app/display/gimpdisplayshell.h b/app/display/gimpdisplayshell.h index 0773df14a4..b62107257e 100644 --- a/app/display/gimpdisplayshell.h +++ b/app/display/gimpdisplayshell.h @@ -159,6 +159,7 @@ struct _GimpDisplayShell guint filter_idle_id; GtkWidget *filters_dialog; /* color display filter dialog */ + const Babl *filter_format; /* filter_buffer's format */ GeglBuffer *filter_buffer; /* buffer for display filters */ guchar *filter_data; /* filter_buffer's pixels */ gint filter_stride; /* filter_buffer's stride */