Revert "Deskbar: Avoid leaking leaf bitmap's memory"
This reverts commit 223ea4329f.
This commit is contained in:
@@ -37,7 +37,6 @@ All rights reserved.
|
|||||||
#include "BarMenuTitle.h"
|
#include "BarMenuTitle.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <new>
|
|
||||||
|
|
||||||
#include <Bitmap.h>
|
#include <Bitmap.h>
|
||||||
#include <ControlLook.h>
|
#include <ControlLook.h>
|
||||||
@@ -156,6 +155,7 @@ TBarMenuTitle::Invoke(BMessage* message)
|
|||||||
void
|
void
|
||||||
TBarMenuTitle::SetIcon(const BBitmap* icon)
|
TBarMenuTitle::SetIcon(const BBitmap* icon)
|
||||||
{
|
{
|
||||||
|
delete fIcon;
|
||||||
fIcon = icon;
|
fIcon = icon;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -177,20 +177,6 @@ TDeskbarMenuTitle::TDeskbarMenuTitle(float width, float height,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TDeskbarMenuTitle::~TDeskbarMenuTitle()
|
|
||||||
{
|
|
||||||
delete fIcon;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
TDeskbarMenuTitle::SetIcon(const BBitmap* icon)
|
|
||||||
{
|
|
||||||
delete fIcon;
|
|
||||||
fIcon = icon;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
TDeskbarMenuTitle::DrawContent()
|
TDeskbarMenuTitle::DrawContent()
|
||||||
{
|
{
|
||||||
@@ -226,21 +212,16 @@ TDeskbarMenuTitle::FetchIcon()
|
|||||||
}
|
}
|
||||||
|
|
||||||
float width = CalcIconWidth();
|
float width = CalcIconWidth();
|
||||||
BBitmap* icon = new(std::nothrow) BBitmap(BRect(0, 0, width - 1, width - 1),
|
BBitmap* icon = new BBitmap(BRect(0, 0, width - 1, width - 1),
|
||||||
B_RGBA32);
|
B_RGBA32);
|
||||||
if (fVectorIconData != NULL && fVectorIconSize > 0 && icon != NULL
|
if (fVectorIconData != NULL && fVectorIconSize > 0
|
||||||
&& BIconUtils::GetVectorIcon(fVectorIconData, fVectorIconSize, icon)
|
&& BIconUtils::GetVectorIcon(fVectorIconData, fVectorIconSize, icon)
|
||||||
== B_OK) {
|
== B_OK) {
|
||||||
// rasterized vector icon into a bitmap
|
// rasterized vector icon into a bitmap
|
||||||
SetIcon(icon);
|
fIcon = icon;
|
||||||
} else {
|
} else {
|
||||||
// fetched bitmap instead
|
// fetched bitmap instead
|
||||||
const BBitmap* leaf = AppResSet()->FindBitmap(B_MESSAGE_TYPE,
|
fIcon = AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_LeafLogoBitmap);
|
||||||
R_LeafLogoBitmap);
|
|
||||||
// make a copy of the leaf bitmap that we can safely delete
|
|
||||||
BBitmap* leafCopy = new BBitmap(leaf->Bounds(), leaf->ColorSpace());
|
|
||||||
leafCopy->ImportBits(leaf);
|
|
||||||
SetIcon(leafCopy);
|
|
||||||
// TODO: scale the bitmap into icon
|
// TODO: scale the bitmap into icon
|
||||||
delete icon;
|
delete icon;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,9 +76,6 @@ class TDeskbarMenuTitle : public TBarMenuTitle {
|
|||||||
public:
|
public:
|
||||||
TDeskbarMenuTitle(float width, float height,
|
TDeskbarMenuTitle(float width, float height,
|
||||||
const BBitmap* icon, BMenu* menu);
|
const BBitmap* icon, BMenu* menu);
|
||||||
virtual ~TDeskbarMenuTitle();
|
|
||||||
|
|
||||||
virtual void SetIcon(const BBitmap* icon);
|
|
||||||
|
|
||||||
virtual void DrawContent();
|
virtual void DrawContent();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user