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:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user