Commit Graph

41875 Commits

Author SHA1 Message Date
Ell
d86d017980 app: in GimpBacktrace Linux backend, don't leak backtrace when dropping threads
Should have been part of commit
a29d040db5.

(cherry picked from commit 01f9409902)
2018-12-01 04:33:48 -05:00
Ell
31acea2cf7 app: in GimpBacktrace Linux backend, make blacklisted_thread_names const
(cherry picked from commit c749097dcc)
2018-12-01 03:52:36 -05:00
Ell
b493cb51f4 app: use gimp_async_add_callback_for_object() in various places
Use gimp_async_add_callback_for_object(), added in the previous
commit, instead of gimp_async_add_callback(), in cases where the
destructor of the object owning the async doesn't wait for the
async to finish.  This avoids leaking such ongoing asyncs on
shutdown, during which gimp-parallel either finishes or aborts the
asyncs: if at this point an async has any registered callbacks, an
idle source is added for running the callbacks, extending the
lifetime of the async; however, since we're not getting back into
the main loop, the idle is never run, and the async (and any
associated resources) are never freed.

(cherry picked from commit 7c00cf498a)
2018-11-30 04:15:45 -05:00
Ell
34cb63a048 app: add gimp_async_add_callback_for_object()
... which is similar to gimp_async_add_callback(), taking an
additional GObject argument.  The object is kept alive for the
duration of the callback, and the callback is automatically removed
when the object is destroyed (if it hasn't been already called).

This is analogous to g_signal_connect_object(), compared to
g_signal_connect().

(cherry picked from commit 49fd2847ac)
2018-11-30 04:15:44 -05:00
Ell
9001d65804 app: unref async when removing last callback if idle is pending
In gimp_async_remove_callback(), if removing the last callback
while the callback idle-source is already pending, cancel the idle
source and unref the async object (the async is reffed when adding
the idle source.)

(cherry picked from commit a779dd3849)
2018-11-30 04:15:44 -05:00
d20efd357a Update NEWS 2018-11-29 00:09:02 +03:00
Ell
b0b541d670 app: use gimp_tile_handler_validate_validate() in gimp:buffer-source-validate
Use gimp_tile_handler_validate_validate(), added in the commit
before last, in gimp:buffer-source-validate, in order to pre-render
the necessary region of the buffer, instead of performing the
validation implicitly by iterating over the region.  This is both
simpler, and, more importantly, allows us to render the entire
region in a single chunk, instead of tile-by-tile, which can be
considerably more efficient, especially with high thread counts.

This essentially extends the dynamic sizing of rendered projection
chunks to layer groups, which are rendered through
gimp:buffer-source-validate, rather than just the main image
projection.

(cherry picked from commit 83dd94ba6a)
2018-11-28 13:27:01 -05:00
Ell
378dc07c7b app: use gimp_tile_handler_validate_validate() in GimpProjection
Use gimp_tile_handler_validate_validate(), added in the last
commit, in GimpProjection, in order to render the projection,
instead of separately invalidating the buffer, undoing the
invalidation, and then rendering the graph.  This is more
efficient, and more idiomatic.

(cherry picked from commit d6f0ca5531)
2018-11-28 13:27:00 -05:00
Ell
a4fb3e11d6 app: add gimp_tile_handler_validate_validate()
... which validates a given rectangle directly into the buffer,
possibly intersecting it with the dirty region.  This is more
efficient than either invalidating, un-invalidating, and rendering
a given rect, as we're doing in GimpProjection, or validating the
buffer tile-by-tile, as we're doing in gimp:buffer-source-validate.

(cherry picked from commit 82a60997d4)
2018-11-28 13:27:00 -05:00
Ell
50b3c2b8ba app: add GimpTileHandlerValidate::validate_buffer() vfunc
... which is similar to the ::validate() vfunc, however, it should
render the result to the provided GeglBuffer, instead of to a
memory buffer.

Provide a default implementation, which uses
gegl_node_blit_buffer() if the default ::validate() implementation
is used, or, otherwise, calls uses
gegl_buffer_linear_{open,close}(), and passes the returned memory
buffer to ::validate().

(cherry picked from commit 0ad41cfe0c)
2018-11-28 13:26:59 -05:00
Ell
cc81f66f12 app: add GimpTileHandlerValidate::{begin,end}_validate() vfuncs
Add begin_validate() and end_validate() virtual functions, and
corresponding free functions, to GimpTileHandlerValidate.  These
functions are called before/after validation happens, and should
perform any necessary steps to prepare for validation.  The default
implementation suspends validation on tile access, so that the
assigned buffer may be accessed without causing validation.

Implement the new functions in GimpTileHandlerProjectable, by
calling gimp_projectable_begin_render() and
gimp_projectable_end_render(), respectively, instead of calling
these functions in the ::validate() implementation (which, in turn,
allows us to use the default ::validate() implementation.)

In GimpProjection, use the new functions in place of
gimp_projectable_{begin,end}_render().

(cherry picked from commit 5a623fc54b)
2018-11-28 13:26:58 -05:00
Ell
18815512f2 app: avoid starting the chunk renderer while finishing drawing a projection
In gimp_projection_finish_draw(), make sure we don't accidentally
re-start the chunk renderer idle source while running the remaining
iterations, in case the chunk height changes, and we need to reinit
the renderer state.

(cherry picked from commit 8a47b68194)
2018-11-28 13:26:58 -05:00
Ell
6ab3ecaca2 app: avoid flushing bufferless projections
Don't needlessly flush projections whose buffer hasn't been
allocated yet.  This can happen when opening an image, in which
case the image is flushed before its projection has a buffer.

(cherry picked from commit b07f810273)
2018-11-28 13:26:57 -05:00
22b11da891 Update Spanish translation 2018-11-28 15:17:18 +00:00
fc7d61a6ea Updated Italian translation 2018-11-24 18:31:39 +01:00
Ell
90292953c3 app: in gimp-parallel, boost priority of waited-upon asyncs
When an async that was created through
gimp_parallel_run_async[_full](), and whose execution is still
pending, is being waited-upon, maximize its priority so that it
gets executed before all other pending asyncs.

Note that we deliberately don't simply execute the async in the
calling thread in this case, to allow timed-waits to fail (which is
especially important for gimp_wait()).

(cherry picked from commit 62baffed98)
2018-11-24 11:07:13 -05:00
Ell
8222124a96 app: add GimpAsync::waiting signal
... which is emitted when the async is being waited-upon, blocking
execution.

(cherry picked from commit 965da12b35)
2018-11-24 11:07:12 -05:00
Ell
79a44eda6d app: more gimp-parallel fixes
Fix indentation in gimp-parallel.{cc,h}.

Remove unused typedefs in gimp-parallel.h.

s/Gimp/Gegl/ in function-type cast in gimphistogram.c.

(cherry picked from commit 05a4437d9a)
2018-11-24 11:05:10 -05:00
Ell
8fe6645950 app: indentation fix in gimp-parallel.cc
(cherry picked from commit 115fc174f2)
2018-11-24 11:05:10 -05:00
Ell
d4312fd5f7 app: remove gimp_parallel_distribute(); use gegl_parallel_distribute()
The parallel_distribute() family of functions has been migrated to
GEGL.  Remove the gimp_parallel_distribute() functions from
gimp-parallel, and replace all uses of these functions with the
corresponding gegl_parallel_distrubte() functions.

(cherry picked from commit 2736cee577)
2018-11-24 11:05:10 -05:00
Ell
ac4ded137f configure.ac: require GEGL >= 0.4.13
(cherry picked from commit 43e3939d4a)
2018-11-24 11:05:10 -05:00
63e86da6f3 tests: OSX - activate GIMP window when tests are running
If window is not focused gimp_test_utils_synthesize_key_event would
fail.
2018-11-23 23:15:25 +01:00
9ae19eb8ec tests: implement gimp_test_utils_synthesize_key_event on OSX/QUARTZ 2018-11-23 23:06:12 +01:00
40a08dcf48 tests: fix clang compilation error on test-eevl.c 2018-11-23 22:32:32 +01:00
Ell
4b647c52e1 Issue #2553 - Can't Move Imported or Pasted Path
Initialize the X/Y tilt fields of improted/pasted path control
points to 0, instead of 0.5, which is the normal value for these
fields in paths.  This avoids calculating bogus distances when
trying to pick the path, causing picking to fail.

(cherry picked from commit 0a123a81a3)
2018-11-23 08:48:41 -05:00
62c52742cd do not activate OSX menu if tests are running to prevent crash 2018-11-23 11:39:21 +01:00
d650e9f81f add to fix test link on OSX 2018-11-23 10:45:39 +01:00
a3b5a7fb32 Update NEWS 2018-11-23 01:51:29 +03:00
465b4b10fb Enable hires retina support for the GTK2/OSX build 2018-11-22 13:45:30 +00:00
Ell
0a39f362b5 libgimpbase, libgimp, app: pass misc. GEGL config to plug-ins
Pass the GEGL tile-cache size, swap path, and thread-count to plug-
ins as part of their config, and have libgimp set the plug-in's
GeglConfig accordingly upon initialization.
2018-11-19 17:09:59 -05:00
Ell
7de86c63e6 libgimpbase: add _gimp_wire_{read,write}_int64()
... for reading/writing guint64 data in the wire protocol.

(cherry picked from commit 77c24ca16c)
2018-11-19 17:09:53 -05:00
Ell
4d542a4ba8 libgimpbase: don't leak GPConfig::icon_theme_dir
(cherry picked from commit 9afa42ab91)
2018-11-19 17:09:52 -05:00
Ell
46d4768699 libgimpwidgets: install gimpspinbutton.h
Added in commit 7ab9ee2686.

(cherry picked from commit 03a928409a)
2018-11-19 09:28:58 -05:00
ab48f12fd6 Issue #2224 - Use the "Swap folder" setting for the GEGL cache
Move swap/cache and temporary files out the GIMP user config dir:

libgimpbase: add gimp_cache_directory() and gimp_temp_directory()
which return the new default values inside XDG_CACHE_HOME and the
system temp directory. Like all directories from gimpenv.[ch] the
values can be overridden by environment variables. Improve API docs
for all functions returning directories.

Add new config file substitutions ${gimp_cache_dir} and
${gimp_temp_dir}.

Document all the new stuff in the gimp and gimprc manpages.

app: default "swap-path" and "temp-path" to the new config file
substitutions. On startup and config changes, make sure that the swap
and temp directories actually exist.

In the preferences dialog, add reset buttons to all file path pages.

(cherry picked from commit a29f73bd9a)
2018-11-18 18:27:05 +01:00
5bab4a2c4a Update Polish translation 2018-11-18 13:23:40 +01:00
dc7bbe971d Update NEWS 2018-11-16 03:14:14 +03:00
70a1534842 Help menu: various updates
Commented out the inactive plug-ins registry: no point linking to a dead page.

Added links to the roadmap page, main wiki page, and the bug tracker. Placed
the link to the bug tracker one level up from '<Image>/Help/GIMP Online'
to make it more visible.
2018-11-16 03:10:33 +03:00
Ell
6f61a7d431 configure.ac: require babl >= 0.1.60
(cherry picked from commit 3821ce4bcd)
2018-11-15 12:56:13 -05:00
Ell
5b93eee52a app: in scale tool, scale around center even when using numeric input
In the scale tool, when the "around center" option is toggled,
scale the item around its center not only through canvas
interaction, but also when entering width/height values through the
tool GUI.

(cherry picked from commit 786bfa5171)
2018-11-15 12:53:11 -05:00
4991603b2a Installer: remove LIBTHAI_DICTDIR environment variable (no longer needed, see https://gitlab.gnome.org/GNOME/gimp/issues/2496#note_365235 ) 2018-11-14 17:28:49 +01:00
fd2008c5c2 NEWS: update. 2018-11-14 13:44:02 +01:00
84ce89a9be Issue #2501: Confusing wording in "Export Image as PDF" dialog.
Nothing said what was going to be the order of the page, except by
testing. Now there will be an explicit text, which will be automatically
updated when checking the "reverse order" box.

(cherry picked from commit afe1de950f)
2018-11-14 13:42:36 +01:00
cee9a1a1c6 Update NEWS 2018-11-14 12:27:54 +00:00
cd55cb3102 Issue #2489 - Gimp 2.10.8 layer menu text along path
Related #2064 - text along path not working with vertical text.

(cherry picked from commit a2da1cd596)
2018-11-13 12:56:25 +09:00
ec300891d3 Update Czech translation 2018-11-13 01:21:31 +03:00
920f66a420 Update Ukrainian translation 2018-11-12 20:08:58 +00:00
936d952312 Update Ukrainian translation 2018-11-12 20:07:47 +00:00
Ell
9ae2e4932d configure.ac: escape backslash chars in compiler version string
When constructing CC_VERSION, escape backslash characters in the
compiler version string, so that they don't get interpreted as
escape sequences by the compiler.  This is especially important on
Windows, where the version string of MinGW may contain backslash
characters as part of paths.

(cherry picked from commit c0b107531e)
2018-11-11 05:49:12 -05:00
Ell
7ca3fe6576 Issue #2473 - Transforming a layer doesn't properly transform its mask
In gimp_drawable_transform_buffer_affine(), avoid modifying the
clipping mode when transforming layer masks, since this function is
used (among other things) to transform layer masks together with
their layer, in which case they should use the same clipping mode
as the layer.

This fixes a regression introduced by commit
2ae823ba2b, causing layer masks to be
transformed with a mismatched clipping mode during layer
transforms, leading to discrepencies between the transformed layer
and the transformed mask.

This commit merely reverts the necessary part of above commit,
fixing the regression, though note that this code is really up for
some serious refactoring: the logic for determining which clipping
mode to use when is spread all over the place.

(cherry picked from commit 45fc30caa7)
2018-11-11 02:28:25 -05:00
47103dc28f Installer: remove lib\gegl-0.2 2018-11-10 22:20:12 +01:00