gimp r26700 - in trunk: . app/plug-in



Author: neo
Date: Thu Aug 21 16:27:06 2008
New Revision: 26700
URL: http://svn.gnome.org/viewvc/gimp?rev=26700&view=rev

Log:
2008-08-21  Sven Neumann  <sven gimp org>

	* app/plug-in/gimppluginprocedure.c
	* app/plug-in/gimptemporaryprocedure.c: don't just free the 
return
	values when running procedures asynchronously. Instead examine
	them and display the error message if there's one.

	* app/plug-in/gimppluginmanager-call.c
	(gimp_plug_in_manager_call_run_temp): return NULL if
	procedure->plug_in is not set.

	* app/plug-in/gimpplugin-message.c: comment.



Modified:
   trunk/ChangeLog
   trunk/app/plug-in/gimpplugin-message.c
   trunk/app/plug-in/gimppluginmanager-call.c
   trunk/app/plug-in/gimppluginprocedure.c
   trunk/app/plug-in/gimptemporaryprocedure.c

Modified: trunk/app/plug-in/gimpplugin-message.c
==============================================================================
--- trunk/app/plug-in/gimpplugin-message.c	(original)
+++ trunk/app/plug-in/gimpplugin-message.c	Thu Aug 21 16:27:06 2008
@@ -436,7 +436,7 @@
       break;
 
     case GIMP_PDB_ERROR_HANDLER_PLUGIN:
-      /*  the plug-in is responsible for this error  */
+      /*  the plug-in is responsible for handling this error  */
       break;
     }
 }

Modified: trunk/app/plug-in/gimppluginmanager-call.c
==============================================================================
--- trunk/app/plug-in/gimppluginmanager-call.c	(original)
+++ trunk/app/plug-in/gimppluginmanager-call.c	Thu Aug 21 16:27:06 2008
@@ -289,7 +289,8 @@
                                     GimpTemporaryProcedure *procedure,
                                     GValueArray            *args)
 {
-  GimpPlugIn *plug_in;
+  GValueArray *return_vals = NULL;
+  GimpPlugIn  *plug_in;
 
   g_return_val_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager), NULL);
   g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
@@ -302,7 +303,6 @@
   if (plug_in)
     {
       GimpPlugInProcFrame *proc_frame;
-      GValueArray         *return_vals;
       GPProcRun            proc_run;
 
       proc_frame = gimp_plug_in_proc_frame_push (plug_in, context, progress,
@@ -346,13 +346,7 @@
 
       gimp_plug_in_proc_frame_unref (proc_frame, plug_in);
       g_object_unref (plug_in);
-
-      return return_vals;
-    }
-  else
-    {
-      /*  can we actually ever get here?  */
-      return gimp_procedure_get_return_values (GIMP_PROCEDURE (procedure),
-                                               FALSE, NULL);
     }
+
+  return return_vals;
 }

Modified: trunk/app/plug-in/gimppluginprocedure.c
==============================================================================
--- trunk/app/plug-in/gimppluginprocedure.c	(original)
+++ trunk/app/plug-in/gimppluginprocedure.c	Thu Aug 21 16:27:06 2008
@@ -231,11 +231,40 @@
                                                plug_in_procedure,
                                                args, FALSE, display);
 
-  /*  In case of errors, gimp_plug_in_manager_call_run() may return
-   *  return_vals, even if run asynchronously.
-   */
   if (return_vals)
-    g_value_array_free (return_vals);
+    {
+      switch (g_value_get_enum (&return_vals->values[0]))
+        {
+        case GIMP_PDB_SUCCESS:
+          break;
+
+        case GIMP_PDB_CALLING_ERROR:
+          if (return_vals->n_values > 1 &&
+              G_VALUE_HOLDS_STRING (&return_vals->values[1]))
+            {
+              gimp_message (gimp, G_OBJECT (progress), GIMP_MESSAGE_ERROR,
+                            _("Calling error for procedure '%s':\n"
+                              "%s"),
+                            gimp_object_get_name (GIMP_OBJECT (procedure)),
+                            g_value_get_string (&return_vals->values[1]));
+            }
+          break;
+
+        case GIMP_PDB_EXECUTION_ERROR:
+          if (return_vals->n_values > 1 &&
+              G_VALUE_HOLDS_STRING (&return_vals->values[1]))
+            {
+              gimp_message (gimp, G_OBJECT (progress), GIMP_MESSAGE_ERROR,
+                            _("Execution error for procedure '%s':\n"
+                              "%s"),
+                            gimp_object_get_name (GIMP_OBJECT (procedure)),
+                            g_value_get_string (&return_vals->values[1]));
+            }
+          break;
+        }
+
+      g_value_array_free (return_vals);
+    }
 }
 
 const gchar *

Modified: trunk/app/plug-in/gimptemporaryprocedure.c
==============================================================================
--- trunk/app/plug-in/gimptemporaryprocedure.c	(original)
+++ trunk/app/plug-in/gimptemporaryprocedure.c	Thu Aug 21 16:27:06 2008
@@ -116,7 +116,40 @@
                                                     GIMP_TEMPORARY_PROCEDURE (procedure),
                                                     args);
 
-  g_value_array_free (return_vals);
+  if (return_vals)
+    {
+      switch (g_value_get_enum (&return_vals->values[0]))
+        {
+        case GIMP_PDB_SUCCESS:
+          break;
+
+        case GIMP_PDB_CALLING_ERROR:
+          if (return_vals->n_values > 1 &&
+              G_VALUE_HOLDS_STRING (&return_vals->values[1]))
+            {
+              gimp_message (gimp, G_OBJECT (progress), GIMP_MESSAGE_ERROR,
+                            _("Calling error for procedure '%s':\n"
+                              "%s"),
+                            gimp_object_get_name (GIMP_OBJECT (procedure)),
+                            g_value_get_string (&return_vals->values[1]));
+            }
+          break;
+
+        case GIMP_PDB_EXECUTION_ERROR:
+          if (return_vals->n_values > 1 &&
+              G_VALUE_HOLDS_STRING (&return_vals->values[1]))
+            {
+              gimp_message (gimp, G_OBJECT (progress), GIMP_MESSAGE_ERROR,
+                            _("Execution error for procedure '%s':\n"
+                              "%s"),
+                            gimp_object_get_name (GIMP_OBJECT (procedure)),
+                            g_value_get_string (&return_vals->values[1]));
+            }
+          break;
+        }
+
+      g_value_array_free (return_vals);
+    }
 }
 
 const gchar *



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