Commit graph

40330 commits

Author SHA1 Message Date
Ell
e8a14deecf app: switch gimppaintcore-loops.c to C++
Ditto.
2018-04-04 17:49:46 -04:00
Ell
c8d4c079a2 app: parallelize gimpbrush-transform.cc
Use gimp_parallel_distribute_foo() to parallelize the brush
transform functions.
2018-04-04 17:49:46 -04:00
Ell
565f1f2aa4 app: switch gimpbrush-transform.c to C++
The next commit is going to parallelize gimpbrush-transform using
the gimp_parallel_distribute_foo() functions.  To spare us a lot of
boilerplate code, we're going to use C++ lambdas as callback
arguments to these functions.

This commit does the initial conversion of gimpbrush-transform.c to
C++, renaming it to gimpbrush-transform.cc.  We do this in a
separate commit, so that the changes are small enough for git to
register this as a renamed file, rather than a new file, so that we
don't lose the file's history.
2018-04-04 17:49:46 -04:00
Ell
86b89cf62a app: add gimp-parallel
Add gimp-parallel.[cc,h], which provides a set of parallel
algorithms.

These currently include:

  - gimp_parallel_distribute():  Calls a callback function in
    parallel on multiple threads, passing it the current thread
    index, and the total number of threads.  Allows specifying the
    maximal number of threads used.

  - gimp_parallel_distribute_range():  Splits a range of integers
    between multiple threads, passing the sub-range to a callback
    function.  Allows specifying the minimal sub-range size.

  - gimp_parallel_distribute_area():  Splits a rectangular area
    between multiple threads, passing the sub-area to a callback
    function.  Allows specifying the minimal sub-area.

The callback function is passed using an appropriately-typed
function pointer, and a user-data pointer.  Additionally, when used
in a C++ file, each of the above functions has an overloaded
template version, taking the callback through a generic parameter,
without a user-data pointer, which allows using function objects.
2018-04-04 17:49:46 -04:00
Ell
700cc33bec configure.ac: require a C++11 compiler
The following commits use C++11 lambdas.
2018-04-04 17:49:46 -04:00
Ell
394c930fbe app: avoid potential division by 0 in dashboard CPU usage sampler 2018-04-04 17:49:46 -04:00
Jehan
fa02a2c64f libgimp: add an exception handler for Windows.
Drmingw already added its own exception handler which generates crash
traces in a text file, for plug-ins as well. This additional handler is
run after Drmingw handler and allows us to do things on our own, and in
particular we could display the content of the debug traces.

Right now it simply prints these to stderr, which actually won't be of
much use on Win32, first because the console is deactivated on stable
releases, also because after tests, it doesn't look like even running
GIMP from cmd outputs to console either.

We currently don't use the same debug dialog as the core on purpose,
because we don't want everyone to send us traces for every unmaintained
third party plug-ins out there. But we should definitely allow easier
trace possibilities at some point, first to improve/debug our own core
plug-ins, and also to help third party plug-in developers!
So this commit is not making visible changes yet but is actually a first
step towards these debugging goals.
2018-04-04 20:25:29 +02:00
Jehan
76bce77d09 libgimp: various warning fixes for Win32. 2018-04-04 06:32:33 +02:00
Jehan
9c8a8ae576 libgimp: do not end the fatal and signal handlers with gimp_quit().
When ending with gimp_quit(), GIMP was not displaying the "Plug-in
crashed" error dialog, which is not good, since we lose the crash
feedback for plug-ins. Just let the plug-in continue its normal run in
order to get the error dialog.
Also protect the tracing functions, which are not working on Win32.
2018-04-04 04:47:43 +02:00
Jehan
e98b937643 libgimp: add a gimp_fatal_func() allowing stack tracing plug-ins on...
... various crashes.
2018-04-04 04:33:19 +02:00
Jehan
6bcb30e1ee devel-docs: update debugging-tips.txt regarding --stack-trace-mode...
... for plug-in debugging as well.
2018-04-04 04:13:28 +02:00
Jehan
c46211190f libgimp: properly catch SIGABRT signal.
SIGABRT was in the switch list in gimp_plugin_sigfatal_handler(), but it
had not been properly handled with gimp_signal_private(), making this
switch case useless. Fix this oversight, and while doing so, move it in
the "fatal error" list for which we may generate stack traces, similarly
to core signal handling. Indeed this signal can definitely happen during
various kinds of common bugs and needs to be debugged.
2018-04-04 04:08:57 +02:00
Jehan
6936a655bd plug-ins: minor fix of an error string.
Was reading this part of the code when I saw this: the error happens
when loading not exporting a PNG.
2018-04-04 02:21:47 +02:00
Jehan
33822c51c2 app: check if tool control is active before setting modifier state.
Similar to commit 845eb522b6, I had a CRITICAL which happened on a
device_changed, triggering gimp_display_shell_update_focus(), this time
in focus in.
2018-04-04 01:00:55 +02:00
Michael Natterer
7230d5d777 Bug 794356 - Rulers always shown for subsequent image views
Remove the connect_after() hack from GimpImageWindow again and instead
add gimp_display_shell_canvas_realize_after() and restore the configured
ruler visibility there. Should work for all cases now.
2018-04-03 22:36:17 +02:00
Michael Natterer
65a697ff67 app: switch the first two args of gimp_channel_new_from_buffer() 2018-04-03 21:57:43 +02:00
Julien Hardelin
de0706f3f1 Updated French translation 2018-04-03 11:47:17 +02:00
Julien Hardelin
cdc20c9c79 Updated French translations 2018-04-03 10:57:46 +02:00
Ell
bbd79f9d62 app: fix Wilber's eyes
Commit fd6d4931c8 accidentally
introduced a bug that caused Wilber's eyes to misbehave.  This
commit is an attempt to fix this issue.  Unfortunately, it seems
like the bug can still be triggered through a certain sequence of
actions...
2018-04-03 03:32:32 -04:00
Michael Natterer
b46b9d8921 Bug 772126 - Make GimpColorFrame handle very long numbers
Add "ellipsize" property to GimpColorFrame and set it to
PANGO_ELLIPSIZE_END in the the pointer information dockable.

Better cut off long numbers than make them expand the dock.
2018-04-03 01:47:53 +02:00
Jehan
5e2600db1e NEWS: keep up-to-date. 2018-04-03 00:49:56 +02:00
Michael Natterer
cad72b1432 app: remove unused variable in gimp_tile_handler_validate_command() 2018-04-02 23:23:54 +02:00
Ell
4acdc7392a app: use gegl_tile_handler_damage_rect() in TileHandlerValidate
Use the recently-added gegl_tile_handler_damage_rect() function
during GimpTileHandlerValidate invalidation, instead of manually
voiding the tile pyramid.  This function avoids voiding mipmapped
tiles entirely when only a subarea of the tile needs to be redrawn.

See GEGL commit 3210f4ffc3c569a2acd9483811cb141070112bc6.
2018-04-02 16:47:45 -04:00
Ell
da3c96f541 app: add "misc" group to the dashboard
... which currently has a single "mipmapped" field, which shows the
total size of processed mipmapped data.
2018-04-02 16:47:45 -04:00
Ell
4c041b2e8a app: allow hiding groups in the dashboard
Add a "groups" submenu to the dashboard popup menu, which can be
used to control which groups are shown in the dashboard.
2018-04-02 16:47:41 -04:00
Michael Natterer
ea48b9f31c Bug 794356 - Rulers always shown for subsequent image views
gimp_image_window_constructed(): connect_after to the notebook's
"switch-page" signal so gimp_display_shell_appearance_update() is
called after gimp_display_shell_canvas_realize(). Just another hack
to fix the hack...
2018-04-02 22:21:41 +02:00
Jehan
8a24de6557 app: fix dashboard help id.
It was using the errors dialog help id. Probably just copy-paste error.
2018-04-02 18:52:31 +02:00
Jehan
d779c13891 app: do not edit symmetry variables but properties.
If variables are edited directly, in some cases, the GUI and the
symmetries may end up out-of-sync. The variable can only be edited
through property setting.
2018-04-02 18:49:23 +02:00
Jehan
3c1516ea50 app: mirror positions 0.0 are accepted.
This value is actually used as a special value when removing a guide to
get rid of a symmetry, in particular it is set in the guides' callback
gimp_mirror_guide_removed_cb() for "removed" signal.
If not setting to 0, when adding back a symmetry, it starts with weird
low or high values near to border (whereas when set to 0, it is reset to
default position afterwards).
2018-04-02 17:44:01 +02:00
Anders Jonsson
6501faf90d Update Swedish translation 2018-04-02 14:34:53 +00:00
Jeremy Bicha
f242bf4d92 appdata: Install appstream metadata to non-deprecated directory
https://www.freedesktop.org/software/appstream/docs/chap-Metadata.html#spec-component-location

https://bugzilla.gnome.org/show_bug.cgi?id=794884
2018-04-02 01:09:21 +02:00
Jehan
15041e8ff7 NEWS: starting the news for 2.10.0.
Note that it might be a 2.10.0 RC2 instead. It will depend on whether we
decide to make a second release candidate (better process and safer) or
release earlier and go forward.
2018-04-02 00:18:09 +02:00
Jehan
617d0c4550 etc: add 4K Ultra HD template and fix DCI 4K.
The dimension currently set in DCI 4K were rather ones of common 5K.
2018-04-01 23:44:22 +02:00
Jehan
c9df2a6879 app: do not raise a warning when failing to deserialize symmetry...
... parasite.
Not sure if that should be considered a bug. On one hand, it should
because that's core code. On the other hand, symmetry saving currently
uses parasites, which is a feature which can also be used by people
randomly. So "theoretically", there could be any data in a parasite and
we should not assume specific format.
Anyway still keep the error message but just print to standard error
output instead. Also print a bit more details (parasite name and
contents) as it would help for debugging when such a case were to occur.
2018-04-01 18:20:26 +02:00
Jehan
e0029d31b4 Bug 792520 - Image symmetries should be saved: version the properties.
Care for future changes of symmetries, by adding a version property. For
now, all symmetries are at version 0, and no real check is done. If any
symmetry bumps its settings in the future, it will have to override also
update_version() to change settings properly if necessary, according to
any new behavior.
2018-04-01 17:51:07 +02:00
Jehan
65717041ed app: save image symmetries in the XCF file.
Symmetries are saved in a parasite, which is backward compatible.
2018-04-01 15:08:48 +02:00
Michael Natterer
9090a98498 app: fix new g_object_ref() warnings in gimp_filter_tool_edit_as()
g_object_ref() now returns the same type that was passed in. Cast the
argument to GObject* to match the variable the return value is
assigned to.
2018-04-01 14:55:11 +02:00
Michael Natterer
fe932fe7ad Bug 794826 - Do not default to last used filter settings
Add GimpGuiConfig::filter-tool-use-last-settings wchich defaults to FALSE.

Honor the new option in gimp_gegl_procedure_execute_async() and add
it to prefs -> dialog defaults.
2018-04-01 14:41:20 +02:00
Michael Natterer
14a054e980 app: add a "Filter Dialogs" section to prefs -> dialog defaults 2018-04-01 14:15:13 +02:00
Michael Natterer
62ec4831db app: ...and a mnemonic. 2018-04-01 14:01:14 +02:00
Michael Natterer
44ce8b4dd8 app: a colon was missing after "Debug Policy" in preferences
and it's "Debug policy" (capitalization).
2018-04-01 13:58:42 +02:00
Michael Natterer
f586aac43a app: use g_clear_foo() in gimp_gegl_procedure_finalize() 2018-04-01 13:54:47 +02:00
shark0r
e55c94eff0 Bug 794854 - Brush color is not added to color history in smudge tool
Add the color in gimp_smudge_paint(INIT) like GimpPaintbrush does.

Achieve this by calling gimp_palettes_add_color_history() directly,
not by inheriting GimpPaintbrush because GimpPaintbrush and GimpSmudge seem to share few common features.
2018-04-01 12:57:27 +02:00
Edward E
019af3dacb file-open-location: don't close dialog if no file was opened 2018-04-01 12:40:57 +02:00
Edward E
a4b366f494 file-open-location: disable widgets only while opening a file 2018-04-01 12:40:57 +02:00
Edward E
33b7d8e334 file-open-location: create only one progress bar 2018-04-01 12:40:57 +02:00
Ell
fd6d4931c8 It's alive! 2018-04-01 01:19:41 +00:00
Michael Natterer
a3071d2620 configure.ac: require babl >= 0.1.45 and GEGL => 0.3.31
and set gimp_version to "2.10.0-RC1-git" so we can distinguish it
from the RC1 tarball.
2018-03-31 18:39:53 +02:00
Jehan
04a798d786 app: do not copy needlessly paint_mask GimpTempBuf.
We are not doing any write operation on this mask data so copying all
the data just to read it and unreffing it in the end is only a cost on
performance.
See also bug 694917.
2018-03-31 16:54:53 +02:00
Ell
49285463e6 app: align projection update area to coarse grid
When adding a rectangle to a projection's update area, align the
rectangle to a coarse grid, to reduce the complexity of the overall
area.  We currently align the rectangle to a 32x32 grid, which
seems to be a good tradeoff between the overhead of processing a
complex area, and the overhead of processing a large area.
2018-03-31 08:19:18 -04:00