Commit graph

42393 commits

Author SHA1 Message Date
Marco Ciampa
a4e920ce19 Updated Italian translation 2018-05-28 13:23:09 +02:00
Michael Natterer
5c2bde7f5d desktop: update .gitignore
(cherry picked from commit 1b71bd38ae)
2018-05-28 12:35:56 +02:00
Jehan
c5da652938 app: fix broken debug output on gitlab.
The GIMP version string and the backtrace both look completely wrong
when pasted as-is on gitlab. Somehow all linefeed are gone.

This can be fixed by surrounding these as blocks (triple backticks),
using markdown syntax. Of course now the debug content is not for our
tracker only since packagers are encouraged to replace with their own
tracker URL, but this small markdown syntax is simple enough that it
should not break formatting on other platforms (as far as I know).

(cherry picked from commit d4ff504735)
2018-05-28 06:35:04 +02:00
Jehan
6aa8db72d3 NEWS: keep up-to-date. 2018-05-28 05:00:30 +02:00
Michael Natterer
e34fc45ccb po: update POTFILES.skip
(cherry picked from commit 7d36b463dc)
2018-05-27 20:03:35 +02:00
Ell
1dff8d40c1 app: fix gimp_parallel_run_async() cancelation
In gimp_parallel_run_async(), when aborting a GimpAsync operation
in reponse to its "cancel" signal, properly clean up internal data
attached to the object, to avoid use-after-free if the signal is
emitted again.

(cherry picked from commit 3fa4c01bcf)
2018-05-27 13:59:42 -04:00
Ell
ddc9daceca app: add "independent" parameter to gimp_parallel_run_async()
Add a boolean "independent" parameter to gimp_parallel_run_async().
When FALSE, the passed function is run in the shared async thread
pool; when TRUE, the passed function is run in an independent
thread.

Generally, async operations should run in the async pool, however,
it might be desirable to run long-standing operations, especially
ones that can't be canceled, in independent threads.  This avoids
stalling quicker operations, and shutdown.

Adapt the rest of the code for the change.  In particular,
initialize the font cache in an independent thread.

(cherry picked from commit ad8add6808)
2018-05-27 13:18:56 -04:00
Ell
3ae1eec240 app: abort canceled pending operations in gimp_parallel_run_async()
In gimp_parallel_run_async(), connect to the returned GimpAsync's
"cancel" signal, and abort the operation in response if it's still
enqueued, i.e., if its execution hasn't started yet.

(cherry picked from commit 3958ffbe50)
2018-05-27 13:18:56 -04:00
Ell
fd1e5883f8 app: implement GimpWaitable and GimpCancelable in GimpAsync
Have GimpAsync implement the GimpWaitable and GimpCancelable
interfaces, added in the previous two commits, instead of providing
its own public version of the corresponding functions.

Add gimp_async_cancel_and_wait() as a convenience function for both
canceling an async operation, and waiting for it to complete.

Adapt the rest of the code to the change.

(cherry picked from commit e2c56ef407)
2018-05-27 13:18:56 -04:00
Ell
6f8892dc2d app: add GimpCancelable interface
... which provides a method for canceling an operation managed by
an object.

(cherry picked from commit 722f92d011)
2018-05-27 13:18:56 -04:00
Ell
028a33cf8a app: add GimpWaitable interface
... which provides methods for waiting on an object.

(cherry picked from commit 0fe066890e)
2018-05-27 13:18:56 -04:00
Jehan
4bf6590363 tools: make gimptool memory-managed.
The code was basically leaking memory everywhere, and apparently on
purpose (according to a top comment). Even on short-lived process, not
properly managing memory is not a good habit, especially if we plan to
maintain a program for the long run.
So here are some fixes. I'm sure I must have missed some places (code
was a mess), and hopefully I broke nothing. But that's good for now. At
least it is somewhat sane code now.

(cherry picked from commit f3de5cd3fe)
2018-05-27 17:57:09 +02:00
Jehan
452c9781e7 tools: do not segfault gimptool with source without extension.
Since commit 58fa382001, gimptool would accept source files with
non-standard extensions when using known C or C++ compilers. This would
include source with no extensions at all.
When this happens, do not try to set a pointer to a non-existing dot
separator to '\0'. That obviously segfaults.

(cherry picked from commit 02fc818bf6)
2018-05-27 16:23:53 +02:00
Jehan
41436198d7 tools: clean tabs out of gimptool code.
(cherry picked from commit 355676e7ae)
2018-05-27 16:23:46 +02:00
張俊芝
a52f83632f Issue #1506: Adds support for source file names with special...
... characters and non-standard suffixes in gimptool

(cherry picked from commit 58fa382001)
2018-05-27 16:23:34 +02:00
Jehan
ffb5f994fb Update various places with old git repository URIs.
(cherry picked from commit c6a1b9bcde)
2018-05-27 16:23:20 +02:00
Jehan
02e15f2dd9 build: update GNOME's git repository URI.
(cherry picked from commit 0034bd44b3)
2018-05-27 16:23:00 +02:00
Ell
44a800f0e5 libgimpconfig: align GimpConfig with the rest of the interfaces
Unlike the last two commits, we don't port GimpConfig to
G_DEFINE_INTERFACE(), since we need to provide a base initializer
for it.  However, this commit aligns it with the rest of our
intefaces, by renaming gimp_config_interface_get_type() to
gimp_config_get_type(), and by performing class initialization for
the interface in a separate function than base initialization.

Keep gimp_config_interface_get_type() around as a deprecated
function, to maintain ABI compatibility.  It will be removed in a
separate commit in master, so that this commit can be easily
cherry-picked to gimp-2-10.

(cherry picked from commit 5f8643a6ee)
2018-05-27 05:56:57 -04:00
Ell
51c1f7f650 libgimpcolor: port all interfaces to G_DEFINE_INTERFACE()
... instead of calling g_type_register_static() ourselves.

Keep the old foo_interface_get_type() (replaced with
foo_get_type()) around as deprecated functions, to maintain ABI
compatibility.  They will be removed in a separate commit in
master, so that this commit can be easily cherry-picked to
gimp-2-10.

(cherry picked from commit 6b40c7f37a)
2018-05-27 05:56:57 -04:00
Ell
40a9736bbf app: port all interfaces to G_DEFINE_INTERFACE()
... instead of calling g_type_register_static() ourselves.

(cherry picked from commit cdd96059f7)
2018-05-27 05:56:57 -04:00
Ell
c820764d4f app: code cleanup in GimpAsync
(cherry picked from commit 770634f84e)
2018-05-27 05:56:57 -04:00
Piotr Drąg
8d03b7b133 Update Polish translation 2018-05-27 07:29:36 +02:00
Jehan
ce5821639e app: output proper info message while fonts are loading.
To this effect, I add a variable to differentiate the "no-fonts on the
system" case from "fonts still loading".

(cherry picked from commit cfaa3103e7)
2018-05-27 03:45:07 +02:00
Jehan
89c829a242 Issue #1211: Load fonts in background after startup.
Fonts should not be blocking startup as this provides a very bad
experience when people have a lot of fonts. This was experienced even
more on Windows where loading time are often excessively long.
We were already running font loading in a thread, yet were still
blocking startup (thread was only so that the loading status GUI could
get updated as a feedback). Now we will only start loading and proceed
directly to next steps.
While fonts are not loaded, the text tool will not be usable, yet all
other activities can be performed.

(cherry picked from commit 2484dec7d5)
2018-05-27 02:36:39 +02:00
Jehan
117beee244 configure, desktop: update the bug report URL.
Also make so that the metadata URL is taken from the one of the package
set with configure.

(cherry picked from commit 6ebff7b3c5)
2018-05-27 02:34:50 +02:00
Ell
2511286e43 po-windows-installer: technical fix to the Latvian translation
ender's name can't be encoded in the target encoding.  Use
alternative form.
2018-05-26 15:04:18 -04:00
Ell
2d19f29200 app: various GimpAsync improvements
Improve the formalism of a GimpAsync object being "sycned"
(previously referred to as the main thread being "synced" with the
async thread), by both providing a gimp_async_is_synced() function,
separate from gimp_async_is_stopped(), and by improving the type
and function descriptions.

Make sure all previously added callbacks have been called after a
call to gimp_async_wait[_until](), even if these functions are
called from within a callback.

(cherry picked from commit a901c3c1f4)
2018-05-26 14:22:32 -04:00
Ell
c96c6802e8 app: add gimp_async_remove_callback()
... which removes a callback previously added through
gimp_async_add_callback().

(cherry picked from commit 85f67e196c)
2018-05-26 14:22:32 -04:00
Ell
52f8abbdbf app: use gimp_parallel_run_async() when loading fonts
Replace the custom threading code with a call to
gimp_parallel_run_async().  This simplifies the code, while
maintaining the current (blocking) behavior.  In the future, we
might build upon this to actually load the fonts in the background.

(cherry picked from commit 3e92e7a449)
2018-05-26 11:34:06 -04:00
Ell
89e9c8d9b3 app: add gimp_async_wait_until()
... which is similar to gimp_async_wait(), taking an 'end_time'
parameter, controlling how long to wait for the async operation to
complete.

(cherry picked from commit 68c57548fd)
2018-05-26 11:33:16 -04:00
Ell
f9ae3ae014 Issue #1490 - Crash when flattening an XCF file
The default stack size for new threads on MacOS is 512 KiB, making
our 512 KiB limit for stack-allocated buffers in
gimp_operation_layer_mode_real_process() too high.  Lower it to
256 KiB.

(cherry picked from commit 367399e5c0)
2018-05-25 20:35:32 -04:00
Ell
448fa97b85 app: fix progress text when applying shaped gradient through PDB
In gimp_drawable_gradient(), pass the undo description ("Gradient")
to gimp_gegl_apply_operation(), so that its displayed as the
progress text while rendering the gradient, even when applying a
shaped gradient, in which case we end the progress after
calculating the distance map, causing the progress text be NULL
during rendering unless explicitly set.

(cherry picked from commit deee2f14f5)
2018-05-25 12:44:10 -04:00
Ell
1d6d054212 app: in GimpOperationGradient, use sampler for reading the distance buffer
... instead of using gegl_buffer_get() directly.  This is slightly
faster.

(cherry picked from commit ef43fc395c)
2018-05-25 12:26:24 -04:00
Rodrigo
7feacb1ecf Update Spanish translation 2018-05-25 12:30:20 +00:00
Ell
b67c1e33f1 app: use gimp_gegl_buffer_copy() all over the place
Replace all uses of gegl_buffer_copy() in app/ with
gimp_gegl_buffer_copy(), added in the previous commit.

(cherry picked from commit 08ff2ac8c8)
2018-05-25 08:20:56 -04:00
Ell
1878543cf8 app: add gimp_gegl_buffer_copy()
... which is a drop-in replacement for gegl_buffer_copy(),
parallelizing the copy operation when the source and destination
formats are different, requiring a conversion.

(cherry picked from commit fded25b38c)
2018-05-25 08:20:56 -04:00
Alexandre Prokoudine
a984d9c49d NEWS: keep updated 2018-05-25 04:19:22 +03:00
Michael Natterer
a9636f7b1d app: actually set the color frames to "not dirty" after updating them
(cherry picked from commit 9d5fc680f8)
2018-05-24 01:56:00 +02:00
Michael Natterer
4a7d364062 app: remove gimp_display_shell_draw_background()
and remove all clipping hacks for drawing the canvas background, turns
out they never worked and we were relying on the pattern set on the
window, gah! This optimizes away one entire step of drawing of image
size, for each expose...
2018-05-23 22:56:15 +02:00
Marek Cernocky
07aa0b2615 Updated Czech translation 2018-05-23 09:40:44 +02:00
Rodrigo
16ff117b02 Updated Spanish translation 2018-05-22 16:35:15 +02:00
Rodrigo
37773c18e6 Updated Spanish translation 2018-05-22 16:00:52 +02:00
Marek Cernocky
378bcea50c Updated Czech translation 2018-05-22 14:30:40 +02:00
Timo Jyrinki
681bd2435e Update Finnish translation 2018-05-22 09:17:34 +00:00
Timo Jyrinki
87db3ce9a8 Update Finnish translation 2018-05-22 09:09:41 +00:00
Timo Jyrinki
e74884f7a1 Update Finnish translation 2018-05-22 07:17:25 +00:00
Marco Ciampa
a48d9178e8 Updated Italian translation 2018-05-21 15:47:53 +02:00
Jernej Simončič
9e5eeefa81 Installer: put back compatibility DLLs (for really old plugins)
(cherry picked from commit d436eb66fc)
2018-05-21 13:02:59 +02:00
Jernej Simončič
f74d1330aa Installer: set compatibility options to run Python plugins in high-DPI-aware mode
(cherry picked from commit fd59ecf2c5)
2018-05-21 13:02:46 +02:00
Jernej Simončič
eb41014b47 Installer: remove .dll files from plug-ins directory
(cherry picked from commit 952e7f365c)
2018-05-21 13:02:28 +02:00