diff --git a/src/apps/showimage/Filter.cpp b/src/apps/showimage/Filter.cpp index 290bb9c9a9..62f04e65f9 100644 --- a/src/apps/showimage/Filter.cpp +++ b/src/apps/showimage/Filter.cpp @@ -42,7 +42,6 @@ Filter::Filter(BBitmap* image, BMessenger listener, uint32 what) Filter::~Filter() { - Stop(); delete fDestImage; } diff --git a/src/apps/showimage/ShowImageView.cpp b/src/apps/showimage/ShowImageView.cpp index 2bd195cbb5..0f2ab6455b 100644 --- a/src/apps/showimage/ShowImageView.cpp +++ b/src/apps/showimage/ShowImageView.cpp @@ -226,12 +226,19 @@ ShowImageView::AddToRecentDocuments() } void -ShowImageView::DeleteBitmap() +ShowImageView::DeleteScaler() { if (fScaler) { - delete fScaler; + fScaler->Stop(); + delete fScaler; fScaler = NULL; } +} + +void +ShowImageView::DeleteBitmap() +{ + DeleteScaler(); delete fpBitmap; fpBitmap = NULL; } @@ -535,7 +542,7 @@ Scaler* ShowImageView::GetScaler() { if (fScaler == NULL || fScaler->Scale() != fZoom) { - delete fScaler; + DeleteScaler(); BMessenger msgr(this, Window()); fScaler = new Scaler(fpBitmap, fZoom, msgr, MSG_INVALIDATE); fScaler->Start(); @@ -1334,7 +1341,7 @@ void ShowImageView::SetZoom(float zoom) { if (fScaleBilinear && fZoom != zoom) { - delete fScaler; fScaler = NULL; + DeleteScaler(); } fZoom = zoom; FixupScrollBars(); diff --git a/src/apps/showimage/ShowImageView.h b/src/apps/showimage/ShowImageView.h index b9054ad841..c3f2fec58b 100644 --- a/src/apps/showimage/ShowImageView.h +++ b/src/apps/showimage/ShowImageView.h @@ -110,6 +110,7 @@ private: void AnimateSelection(bool a); void Notify(const char* status); void AddToRecentDocuments(); + void DeleteScaler(); void DeleteBitmap(); int32 BytesPerPixel(color_space cs) const; inline void CopyPixel(uchar* dest, int32 destX, int32 destY, int32 destBPR, uchar* src, int32 x, int32 y, int32 bpr, int32 bpp);