[gimp] Bug 793090 - GIMP crashes when invoking filter without an image
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] Bug 793090 - GIMP crashes when invoking filter without an image
- Date: Thu, 1 Feb 2018 13:37:30 +0000 (UTC)
commit 4a26d4a3e680504f68e43f24722a38475c77c17d
Author: Michael Natterer <mitch gimp org>
Date: Thu Feb 1 14:35:46 2018 +0100
Bug 793090 - GIMP crashes when invoking filter without an image
filters-commands.c always needs an image and a drawable, so use
return_if_no_drawable(), not return_if_no_display().
Also fix the sensitivity of the shadows-highlights actions, which made
this bug triggerable at all.
app/actions/filters-actions.c | 1 +
app/actions/filters-commands.c | 31 ++++++++++++++++++-------------
2 files changed, 19 insertions(+), 13 deletions(-)
---
diff --git a/app/actions/filters-actions.c b/app/actions/filters-actions.c
index d16ca64..47a79a2 100644
--- a/app/actions/filters-actions.c
+++ b/app/actions/filters-actions.c
@@ -914,6 +914,7 @@ filters_actions_update (GimpActionGroup *group,
SET_SENSITIVE ("filters-saturation", writable && !gray);
SET_SENSITIVE ("filters-semi-flatten", writable && alpha);
SET_SENSITIVE ("filters-sepia", writable && !gray);
+ SET_SENSITIVE ("filters-shadows-highlights", writable);
SET_SENSITIVE ("filters-shift", writable);
SET_SENSITIVE ("filters-sinus", writable);
SET_SENSITIVE ("filters-slic", writable);
diff --git a/app/actions/filters-commands.c b/app/actions/filters-commands.c
index 9f3296b..76766dc 100644
--- a/app/actions/filters-commands.c
+++ b/app/actions/filters-commands.c
@@ -32,6 +32,7 @@
#include "core/gimp.h"
#include "core/gimp-filter-history.h"
+#include "core/gimpimage.h"
#include "core/gimpprogress.h"
#include "core/gimpsettings.h"
@@ -61,18 +62,19 @@ filters_apply_cmd_callback (GtkAction *action,
const gchar *operation_str,
gpointer data)
{
- GimpDisplay *display;
+ GimpImage *image;
+ GimpDrawable *drawable;
gchar *operation;
GimpObject *settings;
GimpProcedure *procedure;
- return_if_no_display (display, data);
+ return_if_no_drawable (image, drawable, data);
- operation = filters_parse_operation (action_data_get_gimp (data),
+ operation = filters_parse_operation (image->gimp,
operation_str,
gtk_action_get_icon_name (action),
&settings);
- procedure = gimp_gegl_procedure_new (action_data_get_gimp (data),
+ procedure = gimp_gegl_procedure_new (image->gimp,
GIMP_RUN_NONINTERACTIVE, settings,
operation,
gtk_action_get_name (action),
@@ -87,7 +89,7 @@ filters_apply_cmd_callback (GtkAction *action,
if (settings)
g_object_unref (settings);
- gimp_filter_history_add (action_data_get_gimp (data), procedure);
+ gimp_filter_history_add (image->gimp, procedure);
filters_history_cmd_callback (NULL, procedure, data);
g_object_unref (procedure);
@@ -98,11 +100,12 @@ filters_apply_interactive_cmd_callback (GtkAction *action,
const gchar *operation,
gpointer data)
{
- GimpDisplay *display;
+ GimpImage *image;
+ GimpDrawable *drawable;
GimpProcedure *procedure;
- return_if_no_display (display, data);
+ return_if_no_drawable (image, drawable, data);
- procedure = gimp_gegl_procedure_new (action_data_get_gimp (data),
+ procedure = gimp_gegl_procedure_new (image->gimp,
GIMP_RUN_INTERACTIVE, NULL,
operation,
gtk_action_get_name (action),
@@ -112,7 +115,7 @@ filters_apply_interactive_cmd_callback (GtkAction *action,
g_object_get_qdata (G_OBJECT (action),
GIMP_HELP_ID));
- gimp_filter_history_add (action_data_get_gimp (data), procedure);
+ gimp_filter_history_add (image->gimp, procedure);
filters_history_cmd_callback (NULL, procedure, data);
g_object_unref (procedure);
@@ -123,16 +126,18 @@ filters_repeat_cmd_callback (GtkAction *action,
gint value,
gpointer data)
{
- Gimp *gimp;
+ GimpImage *image;
+ GimpDrawable *drawable;
GimpDisplay *display;
GimpProcedure *procedure;
- return_if_no_gimp (gimp, data);
+ return_if_no_drawable (image, drawable, data);
return_if_no_display (display, data);
- procedure = gimp_filter_history_nth (gimp, 0);
+ procedure = gimp_filter_history_nth (image->gimp, 0);
if (procedure)
- filters_run_procedure (gimp, display, procedure, (GimpRunMode) value);
+ filters_run_procedure (image->gimp, display, procedure,
+ (GimpRunMode) value);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]