Gimp/app
Jehan 2211ca7fd3 app: wait child processes with g_child_watch_add_full() rather than…
… waitpid().

My use case was when testing gimp_brush_select_new(). When doing tests,
if I let the brush dialog opened while letting the plug-in exit cleanly
otherwise, it somehow locked the process (I have stared so long at the
code and still don't understand why).
gimp_plug_in_close() would wait for it forever and the only way out was
to kill GIMP completely. I guess we could try to run waitpid() with
WNOHANG (and finally force-kill the child if it really won't exit) but
it made the whole logics extra complicated.

The logics with g_child_watch_add_full() is that we don't stop waiting
for the child and just set a callback to finalize what needs to be. Now
the worst case scenario would be to leave zombie processes dangling
around, but it's better than freezing GIMP.

Finally as a weird side effect, doing this change even unblocked the
process with an unfinished brush selector so we don't even have a zombie
anymore (at least for this specific case). All good in the end!

Last side effect: it can speed up a tiny bit the plug-in close as we
don't wait for processes anymore, which could be more visible at first
startups (when we reload all the plug-ins). Though there is nothing
scientific to my numbers, after multiple "first startups", it seems it
went down from about 3.5 to 3.2 seconds on my specific machine. Nothing
extra fancy, but we take what we can (and speeding up the startup was
never the goal of this change anyway). It doesn't affect Windows which
has its own logics to handle process termination and I preferred not to
touch it.
2021-04-29 02:19:41 +02:00
..
actions app, libgimp, pdb, plug-ins: allow pasting multiple full layers. 2021-04-24 23:22:58 +02:00
config app: new default dynamics is "Pressure Size". 2020-12-14 02:15:12 +01:00
core app, libgimp, pdb, plug-ins: allow pasting multiple full layers. 2021-04-24 23:22:58 +02:00
dialogs app: GimpAction now has a "reason" parameter to explain being disabled. 2021-04-23 19:43:30 +02:00
display app, libgimp, pdb, plug-ins: allow pasting multiple full layers. 2021-04-24 23:22:58 +02:00
file app, libgimp, plug-ins: move Orientation metadata handling into core. 2020-09-24 12:43:41 +02:00
file-data app: support saving/exporting with multi-selection. 2020-05-17 18:32:16 +02:00
gegl app: fix autotools build. 2020-11-10 12:52:01 +01:00
gui app: keep error dialog above. 2020-12-17 22:27:01 +01:00
menus app: Add basic infratructure for a vector tool popup menu. 2020-05-25 22:13:45 +02:00
operations app: fix "Luma Lighten/Darken only" layer modes. 2020-11-10 17:25:34 +01:00
paint app: fix "Luma Lighten/Darken only" layer modes. 2020-11-10 17:25:34 +01:00
pdb pdb: add a PDB compat procedure for median-blur 2021-04-25 15:56:41 +02:00
plug-in app: wait child processes with g_child_watch_add_full() rather than… 2021-04-29 02:19:41 +02:00
propgui app: fix config properties / spin buttons mapping for Convolution Matrix filter 2021-01-31 13:09:15 +01:00
tests app: replace gimp_parasite_data*() with gimp_parasite_get_data(). 2021-01-29 23:52:03 +01:00
text app, devel-docs, libgimpbase: s/gimp_parasite_name/gimp_parasite_get_name/… 2021-04-05 18:36:44 +02:00
tools app: fix 3d transform tool not added to gimphelp-ids.h 2021-04-09 18:01:04 -04:00
vectors Don't compile gimpmarshal source file many times 2020-09-13 18:13:29 +03:00
widgets app: fix core crash when a plug-in calling a GimpPdbDialog crashes. 2021-04-28 02:47:24 +02:00
xcf app, devel-docs, libgimpbase: s/gimp_parasite_name/gimp_parasite_get_name/… 2021-04-05 18:36:44 +02:00
.gitignore
about.h
app.c app: improve opening images through the DBus service. 2020-11-10 22:33:25 +01:00
app.h
errors.c app: NULL log domain is not a bug. 2020-09-22 17:59:41 +02:00
errors.h
gimp-debug.c
gimp-debug.h
gimp-intl.h
gimp-log.c app: add gimp_log_{set,remove}_handler() 2020-08-02 11:01:59 +03:00
gimp-log.h app: add gimp_log_{set,remove}_handler() 2020-08-02 11:01:59 +03:00
gimp-priorities.h
gimp-update.c app: unstable versions will check available development releases. 2020-10-22 16:18:31 +02:00
gimp-update.h Issue #4777: "New version available" after update. 2020-10-16 18:15:31 +02:00
gimp-version.c app: add contents of /.flatpak-info in the verbose info. 2020-07-16 12:12:37 +02:00
gimp-version.h app: store the revision number in a data file. 2020-02-13 23:59:46 +01:00
gimpcore.def Cleanup GObject signal marshallers 2020-04-01 21:20:01 +00:00
git-version.h.in app: revert #pragma once to macro guards in meson build. 2019-09-19 13:31:22 +02:00
language.c Issue #4871: Plug-ins not translated. 2020-04-01 18:02:42 +02:00
language.h
main.c app: do not use PATH_MAX and realpath() on macOS. 2021-03-25 03:15:50 +01:00
Makefile.am Fix reference from gimp_param_spec_duplicate to gimp_config_param_spec_duplicate 2020-01-17 11:17:03 +01:00
meson.build meson: Cleanup and fix issues using libapp_dep 2020-05-11 10:52:23 +00:00
sanity.c app: Don't second-guess the dependency system 2021-04-04 12:08:51 +01:00
sanity.h
signals.c app: fixes string format argument types on Windows 32-bit. 2020-04-21 14:11:49 +02:00
signals.h
tests.c Return FALSE on gimp_osx_focus_window to avoid endless loop 2020-01-15 17:40:23 +01:00
tests.h
unique.c
unique.h