diff --git a/headers/private/interface/PictureDataWriter.h b/headers/private/interface/PictureDataWriter.h index 06fb16356f..c2e0634379 100644 --- a/headers/private/interface/PictureDataWriter.h +++ b/headers/private/interface/PictureDataWriter.h @@ -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); diff --git a/src/kits/interface/PictureDataWriter.cpp b/src/kits/interface/PictureDataWriter.cpp index c8903d00ca..bc65fe16ad 100644 --- a/src/kits/interface/PictureDataWriter.cpp +++ b/src/kits/interface/PictureDataWriter.cpp @@ -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(transform); + WriteData(&transform.sx, 6 * sizeof(double)); EndOp(); } catch (status_t& status) { return status; diff --git a/src/kits/interface/PicturePlayer.cpp b/src/kits/interface/PicturePlayer.cpp index edc0599202..f61b2d5a74 100644 --- a/src/kits/interface/PicturePlayer.cpp +++ b/src/kits/interface/PicturePlayer.cpp @@ -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; }