BChannelSlider: Fixed memory leak.

At least, I think so.
Check allocations in BChannelSlider::ThumbFor()-
Also updated copyright and e-mail address.
This commit is contained in:
Stefano Ceccherini 2015-07-28 21:40:21 +02:00
parent ef34aca426
commit 9b7802354f

View File

@ -1,9 +1,9 @@
/*
* Copyright 2005-2009, Haiku Inc. All Rights Reserved.
* Copyright 2005-2015, Haiku Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* Stefano Ceccherini (burton666@libero.it)
* Stefano Ceccherini (stefano.ceccherini@gmail.com)
* Stephan Aßmus <superstippi@gmx.de>
*/
@ -640,18 +640,22 @@ BChannelSlider::DrawThumb(BView* into, int32 channel, BPoint where,
const BBitmap*
BChannelSlider::ThumbFor(int32 channel, bool pressed)
{
// TODO: Finish me (check allocations... etc)
if (fLeftKnob == NULL) {
if (fIsVertical) {
fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 11, 14),
B_CMAP8);
fLeftKnob->SetBits(kVerticalKnobData, sizeof(kVerticalKnobData), 0,
B_CMAP8);
} else {
fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 14, 11),
B_CMAP8);
if (fLeftKnob != NULL)
return fLeftKnob;
if (fIsVertical) {
fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 11, 14),
B_CMAP8);
if (fLeftKnob != NULL) {
fLeftKnob->SetBits(kVerticalKnobData,
sizeof(kVerticalKnobData), 0, B_CMAP8);
}
} else {
fLeftKnob = new (std::nothrow) BBitmap(BRect(0, 0, 14, 11),
B_CMAP8);
if (fLeftKnob != NULL) {
fLeftKnob->SetBits(kHorizontalKnobData,
sizeof(kHorizontalKnobData), 0, B_CMAP8);
sizeof(kHorizontalKnobData), 0, B_CMAP8);
}
}
@ -753,13 +757,15 @@ BChannelSlider::_FinishChange(bool update)
if (!fAllChannels) {
inMask = new (std::nothrow) bool[CountChannels()];
if (inMask) {
for (int i=0; i<numChannels; i++)
for (int i = 0; i < numChannels; i++)
inMask[i] = false;
inMask[fCurrentChannel] = true;
}
}
InvokeChannel(update ? ModificationMessage() : NULL, 0, numChannels,
inMask);
delete[] inMask;
}
if (!update) {