Re: A Process for Each Plugin

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

 



Thanks, Simon. It is really thorough and helpful.

On Tue, 7 May 2019 at 13:16, Simon Budig <simon@xxxxxxxx> wrote:

> Hi Ahmad.
>
> Ahmad Nouralizadeh via gimp-developer-list (gimp-developer-list@xxxxxxxxx)
> wrote:
> > I wonder why GIMP spawns a separate process for each plugin (e.g., by
> > calling g_spawn_async() @app/plug-in/gimpplugin.c:368). For example, I
> > opened an image and the contents of the image was loaded in the memory of
> > process gimp. But when I applied a VanGogh filter on the image, a new
> > process, van-gogh-lic, started and processed the image contents.
>
> Yes, this is completely as designed and expected.
>
> > - Why another process is forked? AFAIK, a fork is used only for the cases
> > when the tasks of the parent and child are completely different.
>
> Having the tasks in different processes has a few advantages:
>
>  * plugins can be small completely separate entities with a very
>    specific small scope. This makes them easy to understand and fast to
>    develop
>  * buggy plugins don't case the main gimp process to crash and burn
>  * they work independently of the actual GIMP version.
>
> An alternative would be to create plugins as shared libraries that get
> linked into the main application. This might have some complications
> with the build process as well as the intricacies of the dynamic
> linking. But it would be doable.
>
> > - How does van-gogh-lic access the contents of the image, while it is
> > loaded in its parent (i.e., the gimp process)?
> > - I also traced the parent process using Pin, which showed that during
> the
> > application of the filter, many accesses were made by gimp. Why?
>
> Plugins use libgimp, which takes up the task of communication with the
> main application. There is quite some back and forth between these two
> processes using an IPC mechanism. A plugin that invokes a PDB function
> basically asks GIMP to do the task.
>
> The actual image data is transferred via shared memory: The two
> processes work on the same pixel data, which avoids expensive copying of
> data.
>
> In the future more image operations will become GEGL-Ops, This is indeed
> a step into "dynamic linking" area, but hopefully the GEGL
> infrastructure is good enough to make it reasonably easy to wrap the
> head around.
>
> I hope this helps,
>          Simon
> --
>               simon@xxxxxxxx              http://simon.budig.de/
> _______________________________________________
> gimp-developer-list mailing list
> List address:    gimp-developer-list@xxxxxxxxx
> List membership:
> https://mail.gnome.org/mailman/listinfo/gimp-developer-list
> List archives:   https://mail.gnome.org/archives/gimp-developer-list
>
_______________________________________________
gimp-developer-list mailing list
List address:    gimp-developer-list@xxxxxxxxx
List membership: https://mail.gnome.org/mailman/listinfo/gimp-developer-list
List archives:   https://mail.gnome.org/archives/gimp-developer-list



[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux