BPicture: fix SET_TRANSFORM command storage

`BAffineTransform` type has vtable and can't be saved as-is to file.

Change-Id: I8540caad9e440f50db7f7810ae25750c60c37ec4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/10645
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
This commit is contained in:
X512
2026-04-01 16:23:39 +00:00
committed by waddlesplash
parent f7016de7c4
commit dc2b843979
3 changed files with 8 additions and 6 deletions
@@ -45,7 +45,7 @@ public:
status_t WriteSetBlendingMode(source_alpha srcAlpha,
alpha_function alphaFunc);
status_t WriteSetScale(const float& scale);
status_t WriteSetTransform(BAffineTransform transform);
status_t WriteSetTransform(const BAffineTransform& transform);
status_t WriteTranslateBy(double x, double y);
status_t WriteScaleBy(double x, double y);
status_t WriteRotateBy(double angleRadians);
+2 -2
View File
@@ -203,11 +203,11 @@ PictureDataWriter::WriteSetScale(const float& scale)
status_t
PictureDataWriter::WriteSetTransform(BAffineTransform transform)
PictureDataWriter::WriteSetTransform(const BAffineTransform& transform)
{
try {
BeginOp(B_PIC_SET_TRANSFORM);
Write<BAffineTransform>(transform);
WriteData(&transform.sx, 6 * sizeof(double));
EndOp();
} catch (status_t& status) {
return status;
+5 -3
View File
@@ -1522,11 +1522,13 @@ PicturePlayer::_Play(PicturePlayerCallbacks& callbacks,
case B_PIC_SET_TRANSFORM:
{
const BAffineTransform* transform;
if (!reader.Get(transform))
const double* transformValues;
if (!reader.Get(transformValues, 6))
break;
callbacks.SetTransform(*transform);
BAffineTransform transform;
memcpy(&transform.sx, transformValues, 6 * sizeof(double));
callbacks.SetTransform(transform);
break;
}