vcl/skia/salbmp.cxx | 12 ++++++++++++
1 file changed, 12 insertions(+)
New commits:
commit e4821ce3e0eb814f8942b9451183b4589e901ec3
Author: Patrick Luby <[email protected]>
AuthorDate: Fri Nov 3 09:13:22 2023 -0400
Commit: Patrick Luby <[email protected]>
CommitDate: Fri Nov 3 18:33:23 2023 +0100
tdf#158014 make image immutable after using Skia to invert
I can't explain why inverting using Skia causes this bug on
macOS but not other platforms. My guess is that Skia on macOS
is sharing some data when different SkiaSalBitmap instances
are created from the same OutputDevice. So, mark this
SkiaSalBitmap instance's image as immutable so that successive
inversions are done with buffered bitmap data instead of Skia.
Change-Id: I8acf90561c48edba14a5f43d16f375f15f25820c
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/158880
Reviewed-by: Patrick Luby <[email protected]>
Reviewed-by: Noel Grandin <[email protected]>
Tested-by: Jenkins
diff --git a/vcl/skia/salbmp.cxx b/vcl/skia/salbmp.cxx
index ea5430abdf53..f82833881470 100644
--- a/vcl/skia/salbmp.cxx
+++ b/vcl/skia/salbmp.cxx
@@ -688,6 +688,18 @@ bool SkiaSalBitmap::Invert()
paint);
ResetToSkImage(makeCheckedImageSnapshot(surface));
DataChanged();
+
+#ifdef MACOSX
+ // tdf#158014 make image immutable after using Skia to invert
+ // I can't explain why inverting using Skia causes this bug on
+ // macOS but not other platforms. My guess is that Skia on macOS
+ // is sharing some data when different SkiaSalBitmap instances
+ // are created from the same OutputDevice. So, mark this
+ // SkiaSalBitmap instance's image as immutable so that successive
+ // inversions are done with buffered bitmap data instead of Skia.
+ mImageImmutable = true;
+#endif
+
SAL_INFO("vcl.skia.trace", "invert(" << this << ")");
return true;
}