Commit Graph

9526 Commits

Author SHA1 Message Date
David Capello
ec4e82bdc0 Fix crashes with SpriteJob(s) that weren't locking the doc correctly (fix #4315)
This was mainly found in SpriteSizeJob crash reports. In these reports
deleted image buffers were still used to paint the Editor canvas
because the doc was write-locked in the main thread (same thread where
the canvas is painted). This produced a re-entrant lock in the
Editor::onPaint() as we can still read-lock from the same thread where
we write-locked the doc.

With this change we write-lock the doc from the SpriteJob background
thread (not the main thread) only if it's necessary (i.e. when the doc
is not already locked in the main thread, e.g. when running a script).
This makes that the main thread (Editor::onPaint) cannot read the doc
until we finish the whole SpriteJob transaction/Tx.
2024-03-25 18:53:12 -03:00
David Capello
427ee6f5b5 Use target_sources() instead of variables to list app-lib sources
target_sources() was added on cmake 3.1, long time ago, although we
started with the 2.6 versions, so now we can modernize the cmake file
a little.
2024-03-19 16:04:50 -03:00
Charles Bradley
571a3965e9 Fix copy+move cursor icon bug (fix #3887)
Add logic to show the correct curson icon when holding the
  copy key (alt) while hovering over a selected layer.
2024-03-15 11:47:04 -03:00
David Capello
8709219d68 Update laf (fix #4368) 2024-03-15 11:26:27 -03:00
David Capello
e129fefb2e Hide "Play subtags" option in File > Export if there are no tags (fix #4308) 2024-03-12 15:54:05 -03:00
David Capello
30f55d196b Show "Apply pixel ratio" option in File > Export only when needed (#4308)
If the sprite doesn't have a custom pixel aspect ratio configured
there is no need to show this option.
2024-03-12 15:14:45 -03:00
David Capello
a0e469624a Use make_shader() helper function to create ColorSelector shaders 2024-03-11 17:48:11 -03:00
David Capello
7905acf38a Handle some extra CannotWriteDocException cases when ContextWriter is used (#4367)
One fix that this patch includes for #4367 (crash by unhandled
CannotWriteDocException exception) is when we drag-and-drop a tag
border to resize its limits. This is a fix for that case but we don't
know if this include all cases of #4367 crashes (so we cannot close
the issue).

Anyway we have added some try { } catch in cases where it's better to
avoid propagating the exception, e.g. in
MovingSelectionState::onLeaveState() to avoid throwing exceptions in
Editor::backToPreviousState() which might be problematic in several
cases. (Maybe related to #2829?)
2024-03-11 17:15:13 -03:00
David Capello
7f659d2f86 Handle exceptions that DocDestroyer can throw (probably #4367) 2024-03-11 11:06:57 -03:00
David Capello
b8514ad1c6 Add helper functions make_shader(), make_skimage/skcanvas_for_docimage()
These functions can be used to create a new Skia shader from SkSL
code, and a new SkImage/SkCanvas to modify a doc::Image*
2024-03-11 10:34:05 -03:00
David Capello
50d4f9d802 Don't try to clone strings repo if Git isn't available (fix #4357)
This can happen when the source code is downloaded as a .zip and the
Git command is not available to clone the strings repo.
2024-03-06 09:59:20 -03:00
David Capello
4584d67b69 Update modules 2024-03-05 19:39:50 -03:00
David Capello
9c611cfaf9 Update laf 2024-03-04 14:57:19 -03:00
David Capello
73fe8099d9 [win] Add 20x20 and 28x28 versions of Aseprite icon (fix #3034)
This is to fix the appearance of the icon when Windows is configured
with 125% DPI or 175% DPI. In the past we've done something similar
for 150% DPI (713a2eac80) with a 24x24
icon.
2024-02-29 23:20:44 -03:00
David Capello
cfb663f820 Some fixes to readability-else-after-return 2024-02-29 10:26:47 -03:00
David Capello
667335be62 Update laf 2024-02-28 21:10:57 -03:00
David Capello
32bdb3a695 Minor rename of header guard
In this way we avoid problems with clang-tidy and defined identifiers
that starts with __
2024-02-28 21:10:07 -03:00
David Capello
4ea0390623 Add [[nodiscard]] to Tx as we have to create an instance of Tx when we use it 2024-02-28 21:09:23 -03:00
David Capello
83d83cd8c6 Add const to lock_guards 2024-02-28 12:32:08 -03:00
David Capello
d37bfa6c43 Fix compilation of tests when LAF_BACKEND=none 2024-02-28 10:45:52 -03:00
David Capello
166124526f Update laf 2024-02-28 10:16:53 -03:00
David Capello
32a1b327a6 Fix typo 2024-02-28 10:16:36 -03:00
David Capello
edc248d418 Removing some unnecessary #includes 2024-02-28 10:16:11 -03:00
David Capello
1a067bb223 Update json11 module 2024-02-28 08:30:23 -03:00
David Capello
b5288d85e7 Update some clang tidy checks 2024-02-27 23:20:12 -03:00
David Capello
8fc7592066 Make clang tidy action work in PRs from forks using split_workflow 2024-02-27 19:07:53 -03:00
David Capello
619b5cbada Run clang tidy in the context of the merge commit 2024-02-27 15:41:07 -03:00
David Capello
03403953f3 Fix cmake -B param in clang tidy action 2024-02-27 14:11:02 -03:00
David Capello
351d9c863f Add config_file parameter to clang tidy action 2024-02-27 13:55:43 -03:00
David Capello
be891230da Remove Ninja from clang tidy action 2024-02-27 13:49:32 -03:00
David Capello
f19215ea9d Update laf module 2024-02-27 13:23:04 -03:00
David Capello
7aca017a58 Fix use-after free in ase_ungroup_all()
Anyway this code is not used anymore, it was for v1.1 when v1.1 and
v1.2 branches were developed at the same time (layer groups feature
was added in v1.2, so v1.1 just moved groups children to the root).
2024-02-27 13:20:13 -03:00
David Capello
52afc9e9a7 Use build directory for cmake command on clang tidy
It's required by freetype library as it looks like it doesn't allow to
build in the same source directory.
2024-02-27 12:20:26 -03:00
David Capello
104f80b334 Change job name of clang tidy to avoid confusion with the build process 2024-02-27 12:20:04 -03:00
David Capello
a86b0a7d0c Fix clang_tidy.yml path 2024-02-27 12:07:19 -03:00
David Capello
1d1b25d425 Update laf module 2024-02-27 11:54:11 -03:00
David Capello
924eaddf75 Add clang tidy workflow action 2024-02-27 11:50:07 -03:00
David Capello
908677edbb Update clang-tidy checks 2024-02-27 11:04:03 -03:00
David Capello
b813c1ad5f Fix regression introduced in 9e2728992d
Some info here:
https://github.com/aseprite/aseprite/pull/4299#discussion_r1503955328
2024-02-27 10:45:26 -03:00
Gaspar Capello
9e2728992d Fix slice tool doesn't work correctly in a tilemap layer when we are in Manual mode (fix #4290) 2024-02-27 10:43:44 -03:00
Martín Capello
7b9594f4e0 Avoid moving the playback cue when decrementing a ping-pong tag's repeat field that has only one frame (fix #4336) 2024-02-26 22:07:31 -03:00
David Capello
c64756ebde Keep testing loading/saving properties as they are in userdata_codec.lua 2024-02-26 17:44:56 -03:00
David Capello
9f75260d25 Change userdata_codec.lua test to check pre-saved user data properties 2024-02-26 17:40:15 -03:00
David Capello
e949a5401d Drop selection when we hide a layer that is being transformed (fix #4179, fix #3254)
This fixes several problems in MovingPixelsState where hidden layers
were transformed anyway when we switched the visibility of a layer in
this state.

Other fix was tried before in #3254 but we needed the onBefore/After
layer visibility change notifications to make this work properly
(i.e. drop pixels when the visiblity of a layer is changed).

The only drawback at this moment is that changing the visibility of
the non-active layer when we are transforming multiple cels/timeline
range can be confused because we don't have #2144/#2865 implemented
yet.

This bug was originally reported here: https://community.aseprite.org/t/20621
2024-02-26 17:36:57 -03:00
David Capello
a2b294b0fe Add final modifier to ToolLoopImpl to avoid clang-tidy warning
The warning is about using a virtual member function in the destructor
where it can be overridden by a derived class so in this case the
derived version wouldn't be called.

Just testing clang-tidy to see if we can add something in the CI.
2024-02-26 15:32:40 -03:00
David Capello
5dbaa295c5 Revert "Drop selection if we hide the layer (fix #4179)"
This reverts commit 078dac28d7.
2024-02-26 10:13:07 -03:00
Gaspar Capello
f22603caea Fix crash when trying to access a property of a Style which is nullptr (fix #4015)
Before this fix, an incomplete custom theme or an outdated official
theme could cause a crash during Aseprite startup.

This fix does not alert the artist the problem of the theme.
Simply avoid the crash.
2024-02-26 10:07:44 -03:00
Gaspar Capello
078dac28d7 Drop selection if we hide the layer (fix #4179) 2024-02-26 09:51:36 -03:00
David Capello
6ab2731fad Remove verbosity in .exe file description on Windows (fix #4333) 2024-02-23 20:00:01 -03:00
David Capello
10dda30a15 Don't write color2 chunk for files with more than 256 colors (fix #4322)
We were incorrectly saving a wrong number of entries for palettes with
more than 256 colors in color2 chunk, anyway it doesn't make sense to
use this chunks as it doesn't support more than 256 colors. So we
removed it for this case.

We've also removed the palette chunk for cases where it's not required
at all, e.g. when we have less than 256 colors and doesn't have alpha
channel, it makes sense to use the color2 chunk as it's smaller in the
output file.
2024-02-22 19:46:34 -03:00