Commit graph

41251 commits

Author SHA1 Message Date
Ell
3c03fcbfbb app: add active async-operations counter to the dashboard
Add an "async" field to the dashboard's "misc" group, showing the
number of async operations currently in the "running" state (i.e.,
all those GimpAsync objects for which gimp_async_finish[_full]() or
gimp_async_abort() haven't been called yet).

(cherry picked from commit aa382650a1)
2018-07-04 16:12:22 -04:00
Ell
0d2d45c3ef app: add config option to enable/disable layer-group previews
Preview generation for layer groups is more expensive than for
other types of drawables, mostly since we can't currently generate
layer-group previews asynchronously.  Add a preferences option for
enabling layer-group previews separately from the rest of the
layer/channel previews; both of these options are enabled by
default.  This can be desirable regardless of performance
considerations, since it makes layer groups easily distinguishable
from ordinary layers.

(cherry picked from commit 30cc85fd63)
2018-07-04 16:12:22 -04:00
Ell
a3883e5de7 app: make dependent options insensitive when "promote imported" is unchecked
In the preferences dialog, make the "dither images when promoting
to floating point" option insensitive when the "promote impoprted
images to floating point precision" option is unchecked.

(cherry picked from commit 5b9bc0aadd)
2018-07-04 16:12:21 -04:00
Ell
0765d8882a app: render drawable previews asynchronously
In GimpViewRendererDrawable, use
gimp_drawable_get_sub_preview_async(), added in the previous
commit, to render drawable previews asynchronously.  While the
preview is being rendered, either keep showing the previous
preview, or render a placeholder icon.

This commit also fixes an issue where, under certain conditions, a
drawable preview would be rendered, even when layer/channel
previews are disabled in the preferences.

(cherry picked from commit 8a81bfd2f1)
2018-07-04 16:12:21 -04:00
Ell
f993de75fe app: add gimp_drawable_get_sub_preview_async()
... which is an asynchronous version of
gimp_drawable_get_sub_preview().

We currently support async preview generation for drawables whose
buffer isn't backed by a GimpTileHandlerValidate tile handler
(i.e., anything other than group layers), since preview generation
fir such drawables may involve processing the corresponding graph,
which isn't thread-safe.

When the GIMP_NO_ASYNC_DRAWABLE_PREVIEWS environment variable is
defined, all drawable previews are synchronously generated.

(cherry picked from commit d79e3fbd6f)
2018-07-04 16:12:21 -04:00
Ell
fac91ddad4 app: add gimp_parallel_run_async_{full,independent}()
Remove the "independent" parameter of gimp_parallel_run_async(),
and have the function always execute the passed callback in the
shared async thread-pool.

Add a new gimp_parallel_run_async_full() function, taking, in
addition to a callback and a data pointer:

  - A priority value, controlling the priority of the callback in
    the async thread-pool queue.  0 is the default priority (used
    by gimp_parallel_run_async()), negative values have higher
    priority, and positive values have lower priority.

  - A destructor function for the data pointer.  This function is
    called to free the user data in case the async operation is
    canceled before execution of the callback function begins, and
    the operation is dropped from the queue and aborted without
    executing the callback.  Note that if the callback *is*
    executed, the destructor is *not* used -- it's the callback's
    responsibility to free/recycle the user data.

Add a separate gimp_parallel_run_async_independent() function,
taking the same parameters, and executing the passed callback in
an independent thread, rather than the thread pool.  This function
doesn't take a priority value or a destructor (and there's no
corresponding "_full()" variant that does), since they're pointless
for independent threads.

Adapt the rest of the code to the changes.

(cherry picked from commit b74e600c12)
2018-07-04 16:12:21 -04:00
Michael Natterer
fea8da130b configure.ac: post-release version bump to 2.10.5 2018-07-04 21:40:18 +02:00
Anders Jonsson
e9b646d5ce Update Swedish translation 2018-07-04 18:42:26 +00:00
Michael Natterer
e384409fe5 configure.ac: release GIMP 2.10.4 2018-07-04 20:16:04 +02:00
Ell
d20170ed6c app: in gimp-parallel, fix async-thread shutdown
... to prevent a potential deadlock.

(cherry picked from commit ff679c66a1)
2018-07-04 14:05:49 -04:00
Alan Mortensen
7b3ecb8080 Updated Danish translation of gimp-plug-ins 2018-07-04 19:38:16 +02:00
Alan Mortensen
bb34116ee3 Updated Danish translation 2018-07-04 19:38:14 +02:00
Michael Natterer
165cedc1ae NEWS: re-line-wrapped so I don't have to do that later in the mail client 2018-07-04 19:01:32 +02:00
Michael Natterer
fa033aaa3f docs, etc: regenerated default gimprc and its manpage 2018-07-04 18:56:51 +02:00
Jehan
3679b08337 desktop: 2.10.4 release is today, earlier than planned!
(cherry picked from commit 8eef339ed5)
2018-07-04 13:01:51 +02:00
Jehan
39213c790e NEWS: keep up-to-date. 2018-07-04 12:56:43 +02:00
Michael Natterer
964e5b4336 configure.ac: require GEGL >= 0.4.4
(cherry picked from commit a62fdce55a)
2018-07-04 12:46:28 +02:00
Alexandre Prokoudine
521afbd09f Update Russian translation 2018-07-04 09:43:49 +00:00
Alexandre Prokoudine
10dae0b2ea Update Russian translation 2018-07-04 03:18:33 +03:00
Michael Natterer
1022a638e8 Issue #1748 - Crash when parsing currupt tool preset
Bail out with an error instead of crashing when the tool options type
name is empty.

(cherry picked from commit e27e783f88)
2018-07-04 01:55:24 +02:00
Michael Natterer
d70bf7653d Issue #1719 - GIMP crashes with an invalid pluginrc
Fix 3 more crashes caused by accepting broken input, spotted by
Massimo.

(cherry picked from commit 7db59e7af9)
2018-07-04 00:19:44 +02:00
Rodrigo
960494c591 Update Spanish translation 2018-07-03 20:53:02 +00:00
Michael Natterer
e662b5a0ee app: fix logic error in tool_options_manager_paint_options_notify()
(cherry picked from commit 1ef7056324)
2018-07-03 20:13:49 +02:00
Michael Natterer
b4edec423c app: move the improved paint property copying code to GimpPaintOptions
and remove the old brush, dynamics, gradient property copying
functions.

(cherry picked from commit 80c423ae40)
2018-07-03 20:13:40 +02:00
Michael Natterer
a8b333a00e app: indentation in gimp-tools.c
(cherry picked from commit 5299b1894d)
2018-07-03 20:13:28 +02:00
Michael Natterer
cf7f27390c app: switch to using gimp-tool-options-manager
and remove all other tool options parent setting/unsetting and
property copying code. Also select a tool at the end of
tool_manager_init() so it is in sync with what the tool options
manager does.

(cherry picked from commit 37f69457b7)
2018-07-03 20:13:20 +02:00
Michael Natterer
19260d87b8 app: make sure the active tool options get saved in devicerc
gimp_devices_save(): call gimp_device_info_save_tool() on the current
device.

(cherry picked from commit 188fd773a5)
2018-07-03 20:13:05 +02:00
Michael Natterer
2a916b241c app: more stuff in gimp-tool-options-manager.c
tool_options_manager_tool_changed(): also copy the non-global paint
options of the new tool to the global paint options, so they get used
when "global_foo" is enabled.

(cherry picked from commit 1b858eb4ad)
2018-07-03 20:12:54 +02:00
Michael Natterer
08d64c6eb8 app: small fix in gimp-tool-options-manager.c
tool_options_manager_paint_options_notify(): sync properties between
tool paint options and global paint options if the property is global
*or* the active tool is involved.

tool_options_manager_global_notify(): don't mess with the active
tool's connection to the user context or its properties at all, it is
always fully connected to the user context anyway.

(cherry picked from commit 54257da7c4)
2018-07-03 20:12:44 +02:00
Michael Natterer
d03b31780b app: add gimp-tool-options-manager.[ch]
The way we currently manage tool options, and particularly copy things
around for "global_brush", "global_pattern" etc. sucks, is spread
across files, happens only on tool change, is thus buggy and leads to
all sorts of small inconsistencies.

This new manager will replace all of that stuff, and it does it in one
place, and will keep the user context, the global paint options, and
all tool options connected permanently, and only connect/disconnect
things when settings change, so everything is always in a consistent
state.

Pushed for review only, nothing is used yet.

(cherry picked from commit ef952f2926)
2018-07-03 20:12:29 +02:00
Michael Natterer
d851a9f203 app: prepare gimpdisplayshell-selection for undeprecation
with a patch that is mergable to 2-10.

(cherry picked from commit 7efb8576a1)
2018-07-03 19:46:27 +02:00
Ell
8ab76a42d8 app: fix GimpMeter history-graph painting when clipped
In GimpMeter, use cairo_path_extents() for getting the history
graph's extents, rather than cairo_clip_extents(), since the latter
may also include clipping applied by GTK.

(cherry picked from commit b8e08cddbc)
2018-07-03 10:31:18 -04:00
Daniel Korostil
7cdebe80a1 Update Ukrainian translation 2018-07-03 14:18:36 +00:00
Daniel Korostil
01e00a2afc Update Ukrainian translation 2018-07-03 14:04:55 +00:00
Daniel Korostil
c4e2763559 Update Ukrainian translation 2018-07-03 14:04:09 +00:00
Daniel Korostil
7b7dde84b0 Update Ukrainian translation 2018-07-03 09:22:12 +00:00
Michael Natterer
66ce32c8cb configure.ac: require babl >= 0.1.52
(cherry picked from commit 7aa4273806)
2018-07-02 20:08:47 +02:00
Ell
4569fdd34b app: explicitly close output stream when saving internal data
According to some bug reports, it seems that under some (unknown)
conditions we might save an empty custom gradient file on exit (for
equally unknown reasons).  The only difference in the way we save
internal data files, such as the custom gradient, compared to
gimp_data_save(), is the fact that we currently don't explicitly
close the output stream, but rather only unref it.

The output stream should be implicitly closed (and hence flushed)
upon destruction, but maybe the unreffing is not enough to
guarantee that it's actually destroyed (maybe it spawns an extra
reference for some reason, who knows.)  Anyway, let's just
explicitly close it, which also gives us a chance to catch and
report any errors occursing during flushing/closing (which,
altenatively, might be the culprit).

Additionally, a few more error-reporting improvements, to match
gimp_data_save().

(cherry picked from commit a72f7f1ace)
2018-07-02 11:48:49 -04:00
Rodrigo
80efa4a70d Update Spanish translation 2018-07-02 15:13:20 +00:00
Piotr Drąg
85a4ede083 Update Polish translation 2018-07-02 17:09:12 +02:00
Hannie Dumoleyn
2d6e47eef3 Update Dutch translation 2018-07-02 11:13:40 +00:00
Rodrigo
22cc731426 Update Spanish translation 2018-07-02 09:50:55 +00:00
Alexandre Prokoudine
c2e1147ff5 Sync USM menu entry to GEGL 2018-07-02 02:32:29 +03:00
Michael Natterer
b6c50c016c app: on make check, search menu XML files in both buildir and srcdir
Turn GIMP_TESTING_MENUS_DIR into GIMP_TESTING_MENUS_PATH and look in
all its dirs for the menu file.

(cherry picked from commit 8516aedade)
2018-07-01 19:46:31 +02:00
Piotr Drąg
6b42597d7b Update Polish translation 2018-07-01 19:27:49 +02:00
Rūdolfs Mazurs
6129f71a63 Update Latvian translation 2018-07-01 15:33:37 +00:00
Rūdolfs Mazurs
80bde0cb28 Update Latvian translation 2018-07-01 13:24:50 +00:00
Gábor Kelemen
99ae1a9e09 Update Hungarian translation 2018-07-01 08:01:54 +00:00
Jordi Mas
ef6354bf07 Update Catalan translation 2018-06-30 07:55:55 +02:00
Michael Schumacher
0a3d8ca0b2 app: Prevent parallel builds for the tests
The tests must not be run in parallel or in a different order as specified
2018-06-29 10:28:42 +00:00