Commit Graph

42180 Commits

Author SHA1 Message Date
Ell 072d6b0d12 Issue #2120 - Segmentation fault while using Levels to white balance a layer
Move the call to gimp_filter_tool_disable_color_picking() from the
filter-tool's dialog "unmap" handler to gimp_filter_tool_halt().
Since commit ec80a88513, we
explicitly destroy the GUI when halting the filter tool, which
happens before the dialog's unmap handler is called, which could
potentially result in a dangling pointer to the active color-picker
widget in gimp_filter_tool_disable_color_picking().
2018-08-30 03:37:36 -04:00
Debarshi Ray 5dcee9ad37 file-jpeg: Fix the copyright and license notices of jpeg-icc.*
This code was originally written by Thomas G. Lane and Todd Newman,
and proposed for inclusion in the Independent JPEG Group's software.
However, that fell through when Tom left the IJG. It was not written by
Marti Maria - Little cms only had a copy of that code.

This code has recently been merged into libjpeg-turbo, so it seems
reasonable to now consider libjpeg-turbo as the canonical source of
these files. However, since the GIMP carries the original version of
the code proposed for IJG's JPEG, and doesn't contain any of the more
recent and minor tweaks made during its inclusion in libjpeg-turbo,
only the original copyright holders (ie., Thomas G. Lane and Todd
Newman) are mentioned.

The relevant license text was lifted from the Independent JPEG Group's
software, similar to the way it's done in Chromium and other users of
this code.

https://gitlab.gnome.org/GNOME/gimp/issues/2119
2018-08-29 17:38:49 +02:00
Piotr Drąg be668697cb Update Polish translation 2018-08-28 19:49:24 +02:00
Ell 547190faa8 Issue #2116 - bug: Image guide creation by dragging does not allow ...
... 100% position anymore

In GimpGuideTool, use a closed [0, max_position] range as the
allowable range for new/repositioned guides (where max_position is
either the image's width or height), so that guides can be placed
at the right/bottom edge of the image.
2018-08-28 03:45:50 -04:00
Ell d210199da5 app: fix dashboard swap read-throughput desc.; add translator comment 2018-08-26 15:13:40 -04:00
Piotr Drąg f0cb8a6f6f Update Polish translation 2018-08-26 18:16:40 +02:00
Christian Kirbach 4c9d82aaff Update German translation
(cherry picked from commit 9feca3b094)
2018-08-25 23:41:31 +00:00
Ell e563845174 Issue #2095 - Filter wavelet-decompose error with layer Group option active
In gimp_image_merge_layers(), explicitly fetch the graph of the top
layer's parent layer (if exists), to make sure that the top layer's
graph has a parent node.  We already fetch the image graph, which
takes care of top-level layers, however, if the top layer is a
child of an invisible layer group, as is the case in the wavelet-
decompose plug-in, this is not generally enough to guarantee that
the group's graph is constructed.
2018-08-25 04:08:59 -04:00
Michael Natterer bcf9c94358 app: s/sprintf/g_snprintf/ in xcf_save_image() 2018-08-21 12:19:55 +02:00
Ell ec80a88513 app: explicitly clear GUI when halting a filter tool
In gimp_filter_tool_halt(), explicitly clear the GUI container
before clearing filter_tool->config, since the tool might be halted
during the GUI dialog's delete event, in which case the GUI will
only be implicitly destroyed *after* the function returns.  The
destruction of the GUI might fire signals whose handlers rely on
filter_tool->config, so we need to make sure it happens while it's
still alive.

In particular, this fixes a CRITICAL in the threshold tool, which
occurs due to the histogram view's "range-changhed" signal being
fired during its destruction, and its handler accessing
filter_tool->config.
2018-08-20 14:41:06 -04:00
Ell fd64aae47b app: add gimp_gtk_container_clear()
... which removes all non-internal children of a GtkContainer.
2018-08-20 14:41:04 -04:00
Michael Natterer 717c183a3e app: make GimpDeviceInfo more rubust against broken device listings
gimp_device_info_set_device(): don't just bail out if a device with
the same name is added again, instead, simply continue and overwrite
the info's old device with the new one.

NOTE that this only happens if something is wrong on the USB or udev
or libinput or whatever side and the same device is present multiple
times. The only "safe" thing is to assume that devices listed earlier
are dead and dangling entities and that the last registered device is
the one actually delivering events.
2018-08-20 20:02:19 +02:00
Michael Natterer 5d937a237b icons: make the gap of the broken chain larger in the Color theme
(cherry picked from commit 6837554376)
2018-08-20 20:02:19 +02:00
Jehan 49fc5e3034 tools: invert-svg build tool no longer necessary.
This tool has been outdated for some time now as we don't generate an
"inverted icons" theme anymore. This is all done through CSS from a
single symbolic icon theme.
2018-08-20 17:52:22 +02:00
Jehan 96dc7da000 devel-docs: document new debugging option --enable-win32-debug-console. 2018-08-20 17:29:04 +02:00
Ell a1706bbd29 app: use adaptive chunk size when rendering projections
In GimpProjection, use an adaptive chunk size when rendering the
projection asynchronously, rather than using a fixed chunk size.
The chunk size is determined according to the number of pixels
processed during the last frame, and the time it took to process
them, aiming for some target frame-rate (currently, 15 FPS).  In
other words, the chunks become bigger when processing is fast, and
smaller when processing is slow.  We're currently aiming for
generally-square chunks, whose sides are powers of 2, within a
predefined range.

Note that the chunk size represents a trade off between throughput
and responsiveness: bigger chunks result in better throughput,
since each individual chunk incurs an overhead, in particular when
rendering area filters or multithreaded ops, while smaller chunks
result in better responsiveness, since the time each chunk
individual takes to render is smaller, allowing us to more
accurately meet the target frame rate.  With this commit, we aim to
find a good compromise dynamically, rather than statically.

The use of adaptive chunk sizes can be disabled by defining the
environment variable GIMP_NO_ADAPTIVE_CHUNK_SIZE, in which case we
use a fixed chunk size, as before.
2018-08-20 11:13:53 -04:00
Ell 105ffc787d app: don't chunk update area when rendering projection synchronously
Add a boolean "chunk" parameter to
gimp_projection_chunk_render_iteration(), which determines whether
the work area should be sub-divided into chunks prior to rendering
(previously, the work area would always be sub-divided.)  Only
pass TRUE when rendering the projection asynchronously, in the
render callback, and pass FALSE when rendering the projection
synchronously, in gimp_projection_finish_draw(), which is called
when flushing the projection through the GimpPickable interface.

Rendering the projection using as big chunks as possible improves
performance, while worsening responsiveness.  Since responsiveness
doesn't matter when rendering synchronously, there's no reason to
render in chunks.
2018-08-20 11:13:05 -04:00
Jehan b8d4ab4808 configure: reorder the dependency version list.
Current order was just completely random, which makes it hard to manage.
Let's order alphabetically.
2018-08-20 17:06:16 +02:00
Ell 9420805525 Issue 2052 - Crash when using the flip tool
In gimp_transform_tool_transform(), use "active_item", instead of
"tool->drawable", when cutting/pasting the selected portion of a
layer for transformation.  The latter is a remnant of the old
transform-tool code, and is not guaranteed to be correspond to the
correct drawable, or even to a valid drawable (i.e., it can
potentially produce wrong results, or segfault.)
2018-08-20 04:22:30 -04:00
Ell 668fee966a libgimp: in GimpTileBackendPlugin, use gegl_tile_backend_command()
In the command handler of GimpTileBackendPlugin, forward unhandled
commands to gegl_tile_backend_command(), instead of asserting that
they're within range (which has already been disabled by commit
bc3b076caf).  See GEGL commit
30047e65723ebb44fcde9c6b5f60ceecb43b0895.
2018-08-19 19:46:11 -04:00
Jehan 17e37ddf24 INSTALL: add appstream-glib in the dependency list. 2018-08-19 18:11:56 +02:00
Jehan 11cee13f62 configure: more explicit error message for gtk-encode-symbolic-svg.
Make it obvious this is a tool searched in PATH (and not for instance a
lib) from the error message.
2018-08-19 18:07:09 +02:00
Ell bc3b076caf libgimp: disable tile command range check in plug-in tile backend
In gimp_tile_backend_plugin_command(), disable the range check for
the input tile command.  This check prevents us from adding new
tile commands to GEGL without breaking the ABI; yet, the next GEGL
release will add a new command.  We're going to have to decide what
to do about this, but for now, let's just disable the check, so
that at least GIMP 2.10.6 is compatible with newer versions of
GEGL, no matter how we end up handling this.

(cherry picked from commit 90ed3c8d3a)
2018-08-19 06:51:15 -04:00
Jehan de11e3532c Issue #1970: Python-fu missing in 2.10.4.
Do not set the interpreter to `python2` but to whatever was found by the
AM_PATH_PYTHON2() m4 macro.
It looks like the Python2 binary we ship in our DMG may be call "python"
only (without the '2'). Let's just make our code more resilient to
various builds.
I am not sure yet this is the only/actual problem for this issue on
macOS, but this is at least in the right way.

(cherry picked from commit 8f21c9483a)
2018-08-19 12:48:02 +02:00
Jehan b67d7c4413 app: fix "Bad interpreter" error messaging.
If I override the `program` variable, and it is not found in PATH
environment, then it is NULL and the error message is unhelpful. Make
the return value of g_find_program_in_path() into a separate variable
instead, and only override `program` in the end, when we know it is
non-NULL.

(cherry picked from commit 87a9feb6d9)
2018-08-19 12:48:02 +02:00
Ell f1ff239d68 configure.ac: require GEGL >= 0.4.9 2018-08-19 03:38:53 -04:00
Ell 5446163e1d app: show swap read/write throughput in the dashboard
Show the read/write throughput of swap data in the corresponding
swap-group fields.
2018-08-19 03:34:47 -04:00
Ell cd54457d46 app: add "queued" field to the dashboard swap group
... which reports the amount of data queued for writing to the
swap (see GEGL commit 64021786ee067cf66c038622719acc590e6341db.)
When the swap queue is full, a yellow color underlay is shown in
the history graph.
2018-08-19 03:34:19 -04:00
Ell b6e552a74b app: add "compression" field to the swap dashboard group
The "compression" field reports the ratio between the total size of
the data in the swap, and the total size the data would have had if
all tiles in the swap occupied a unique data block.

See GEGL commit 185f4450f2a51690b39112973c61f894c1ec3e41.
2018-08-19 03:34:19 -04:00
Ell 8313a40fb5 app: show horizontal scrollbar in dashboard when necessary 2018-08-19 03:34:19 -04:00
Jehan 1d555018ed desktop: GIMP 2.10.6 is now planned to be released on 2018-08-19.
Hopefully that's now the right one!
2018-08-18 18:25:50 +02:00
Jehan 0b73a1bc93 icons: fix build with vector icons (default).
That's the problem of having alternative build options! My previous
commits were made when testing the build with PNG icons.
Anyway I am planning to soon merge the 2 options.
2018-08-18 18:21:58 +02:00
Øyvind Kolås 6ad5d74565 configure/app: depend on GEGL 0.4.8 2018-08-18 15:23:22 +02:00
Jehan b810590b44 plug-ins: include the right python source in the distribution.
The python path with directory are generated files and should not be in
the dist. The previous commit was fixing an in-tree `make check` but
this one fixes the `make distcheck` as the dist was packaging the wrong
python files.

(cherry picked from commit 55a7872e1b)
2018-08-18 12:51:59 +02:00
Jehan 9bbe950c00 po-python: skip copied Python files from POTFILES.
This issue was invisible when making VPATH builds, but appeared only in
source-tree builds as gettext tools are apparently mixing source and
build files. So we need to add these in the POTFILES.skip.

(cherry picked from commit 8ec5f44f2f)
2018-08-18 12:51:59 +02:00
Jehan babf74a3db icons: generate PNG symbolic icons with `gtk-encode-symbolic-svg`.
We don't need to commit PNG symbolic icons as `gtk-encode-symbolic-svg`
is perfectly able to generate them from the SVG.
Moreover its man says that it makes "specially prepared png files",
whatever that means. So I don't think we should just rename our
self-exported PNG files as '*-symbolic.symbolic.png'. It is better to
generate them with this tool.

Note that I am now splitting icon-list.mk into 2 files. This is only a
temporary stepback, as I am actually going to merge the 2 icon themes
into one very soon, and hopefully we should be able to generate the list
to ensure we don't miss an icon.
Anyway the icon lists had already diverged earlier, even though it was
only all still in a single file.
2018-08-18 12:51:59 +02:00
Jehan 8cfe2df866 app: allow GUI config property for icon style preference.
A single icon theme can contain both regular and symbolic icons. Let's
give possibility to switch from one style to the other within GIMP
Preferences.

This won't work very well in all cases yet, especially if an icon theme
only has symbolic icons (and no regular ones) because of inconsistencies
in glib which are being fixed (patches which I submitted and which were
merged in glib on 2018-08-17).
So this will work as expected when we will bump our glib requirement to
whatever is the next release.
2018-08-17 23:24:21 +02:00
Tim Sabsch 4c5cb92352 Update German translation
(cherry picked from commit 319b1efb4d)
2018-08-17 16:44:02 +00:00
Michael Natterer bcdd575124 Issue ##2000 - Linked and unlinked chain icons look almost identical
Make the gap of the broken chain icons of the "Color" theme wider.

(cherry picked from commit b1fbf1eb63)
2018-08-17 15:44:38 +02:00
Rafael Fontenelle d65f5eb9de Update Brazilian Portuguese translation 2018-08-16 20:37:47 +00:00
Ricardo Silva Veloso 67cab0a9cf Update Brazilian Portuguese translation
(cherry picked from commit 7cc1bab361)
2018-08-16 20:27:43 +00:00
Jehan b4f7a90afe app: reorder function definitions/declarations.
Just make so that the declarations and definitions are in the same
order for easy maintenance.

(cherry picked from commit 91cb86d2ab)
2018-08-15 19:24:49 +02:00
Emin Tufan Çetin ff4ce6b70b Update Turkish translation 2018-08-15 15:38:12 +00:00
Jehan d5b0f71b4c app: open the Windows console a bit earlier.
If we enable the console on Windows, we might as well open it as fast as
possible, since its purpose is debugging.

(cherry picked from commit c9d7618056)
2018-08-15 14:34:26 +02:00
Jehan 624edf9017 Issue #1809: update DLL directory for 32-bit plug-in run from 64-bit...
... Windows installation of GIMP.

Our default installer installs 32-bit version of the various DLLs in
32/bin/ (under the installation prefix). Currently this additional
folder is simply added in the PATH, so it works most of the time.
Unfortunately the PATH is searched last for DLLs, and in particular, it
is searched after system directories. So it means that if any misbehaved
application is installing DLLs in system dirs (and in particular
incompatible/older versions of the same DLLs a GIMP plug-in uses), it
breaks the 32-bit plug-in.

SetDllDirectoryW() bypasses this order and the set folder is searched in
between the binary directory and the system dirs. We were already
setting this for our main bin/ directory, which was good for 64-bit
plug-ins, but this was not protecting 32-bit plug-ins. Now our code to
run plug-ins check the bitness of the executable before running it, and
updates the DLL folder accordingly.
The alternative 32-bit folder can be overridden by the configure option
--with-win32-32bit-dll-folder (default: 32/bin/). This option can only
be set when building for 64-bit Windows obviously.

Alternatively we could have put copies of 32-bit DLLs in a subfolder
with each 32-bit plug-in, but this is at best a terrible workaround, as
we would duplicate DLLs for every such case. And this would not have
protected third-party plug-ins which wish to use some of our DLLs.
Last alternative is to use AddDllDirectory(), but it works since Windows
7 with a given update only. And our current official support is any
Windows since Windows 7. So we don't want to use this right now (also
I'm not sure it would actually be much better than current
implementation, and it seems to have a bit more limitations than
SetDllDirectoryW(), though I have not tested).

(cherry picked from commit 91c139f4d0)
2018-08-15 14:34:19 +02:00
Øyvind Kolås 3d464e03b4 configure/app: depend on babl 0.1.56 2018-08-14 18:47:29 +02:00
Jehan fb57133d55 INSTALL, configure: replace Jasper with OpenJPEG.
Just realizing we haven't updated the INSTALL file with the dependency
change.
2018-08-13 12:32:12 +02:00
Jehan ddeff31476 app, configure: add a --enable-win32-debug-console build option.
Debugging stable versions under Windows is a pain because we don't have
access to the standard outputs. The debug console is indeed only built
on unstable builds. Let's make the debug console a separate build option
to allow building stable versions for debug (obviously the default
behavior when not configuring, is same as before, i.e. stable without
console and unstable with console).

(cherry picked from commit 1a28878943)
2018-08-12 22:54:25 +02:00
Jehan 0832bbd771 plug-ins: replace s/printf/g_printf/
When cross-compiling, I got various linking errors for printf() calls:
> undefined reference to `libintl_printf'

I am unsure why, since this is not recent code, and it used to build
fine with mingw64 compilers (last I cross-built, which is many months
ago). Anyway g_printf() works fine, all necessary libs are already
linked, and it is supposed to be a synonym. So let's just go the easy
way and use g_printf() only.

(cherry picked from commit c49afa4f84)
2018-08-12 22:53:24 +02:00
Jehan 8e453330c9 configure: GLIB_COMPILE_RESOURCES is wrong when cross-compiling.
AM_PATH_GLIB_2_0 m4 macro actually computes this value using
$PKG_CONFIG. Yet $PKG_CONFIG variable is the pkg-config tool looking for
target libraries (not host), hence it would return the executable
`glib-compile-resources` built for the target.

Also using the same variable name invalidates our test: our own
AC_PATH_PROG was never run as the variable was already set. And no
environment variable could override this test anymore either. This is
why I rename the test variable to HOST_GLIB_COMPILE_RESOURCES.

(cherry picked from commit d1d9eb17e5)
2018-08-12 22:52:45 +02:00