static void
gimp_temporary_procedure_execute_async (GimpProcedure  *procedure,
                                        Gimp           *gimp,
                                        GimpContext    *context,
                                        GimpProgress   *progress,
                                        GimpValueArray *args,
                                        GimpObject     *display)
{
  GimpTemporaryProcedure *temp_procedure = GIMP_TEMPORARY_PROCEDURE (procedure);
  GimpValueArray         *return_vals;

  return_vals = gimp_plug_in_manager_call_run_temp (gimp->plug_in_manager,
                                                    context, progress,
                                                    temp_procedure,
                                                    args);

  if (return_vals)
    {
      GimpPlugInProcedure *proc = GIMP_PLUG_IN_PROCEDURE (procedure);

      gimp_plug_in_procedure_handle_return_values (proc,
                                                   gimp, progress,
                                                   return_vals);
      gimp_value_array_unref (return_vals);
    }
}
static void
gimp_plug_in_handle_proc_return (GimpPlugIn   *plug_in,
                                 GPProcReturn *proc_return)
{
  GimpPlugInProcFrame *proc_frame = &plug_in->main_proc_frame;

  g_return_if_fail (proc_return != NULL);

  proc_frame->return_vals =
    plug_in_params_to_args (proc_frame->procedure->values,
                            proc_frame->procedure->num_values,
                            proc_return->params,
                            proc_return->nparams,
                            TRUE, TRUE);

  if (proc_frame->main_loop)
    {
      g_main_loop_quit (proc_frame->main_loop);
    }
  else
    {
      /*  the plug-in is run asynchronously, so display its error
       *  messages here because nobody else will do it
       */
      gimp_plug_in_procedure_handle_return_values (GIMP_PLUG_IN_PROCEDURE (proc_frame->procedure),
                                                   plug_in->manager->gimp,
                                                   proc_frame->progress,
                                                   proc_frame->return_vals);
    }

  gimp_plug_in_close (plug_in, FALSE);
}
Example #3
0
static void
gimp_plug_in_procedure_execute_async (GimpProcedure *procedure,
                                      Gimp          *gimp,
                                      GimpContext   *context,
                                      GimpProgress  *progress,
                                      GValueArray   *args,
                                      GimpObject    *display)
{
  GimpPlugInProcedure *plug_in_procedure = GIMP_PLUG_IN_PROCEDURE (procedure);
  GValueArray         *return_vals;

  return_vals = gimp_plug_in_manager_call_run (gimp->plug_in_manager,
                                               context, progress,
                                               plug_in_procedure,
                                               args, FALSE, display);

  if (return_vals)
    {
      gimp_plug_in_procedure_handle_return_values (plug_in_procedure,
                                                   gimp, progress,
                                                   return_vals);
      g_value_array_free (return_vals);
    }
}