From 2154128845326c963e37c20edd05bef348f6c7e4 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Mon, 9 Jan 2017 02:31:38 -0800 Subject: [PATCH] Revert "Deskbar: Avoid leaking leaf bitmap's memory" This reverts commit 223ea4329f3dd3282de0ba198d36a515a4b20265. --- src/apps/deskbar/BarMenuTitle.cpp | 29 +++++------------------------ src/apps/deskbar/BarMenuTitle.h | 3 --- 2 files changed, 5 insertions(+), 27 deletions(-) diff --git a/src/apps/deskbar/BarMenuTitle.cpp b/src/apps/deskbar/BarMenuTitle.cpp index c45fb21fea..bd589f496c 100644 --- a/src/apps/deskbar/BarMenuTitle.cpp +++ b/src/apps/deskbar/BarMenuTitle.cpp @@ -37,7 +37,6 @@ All rights reserved. #include "BarMenuTitle.h" #include -#include #include #include @@ -156,6 +155,7 @@ TBarMenuTitle::Invoke(BMessage* message) void TBarMenuTitle::SetIcon(const BBitmap* icon) { + delete fIcon; 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 TDeskbarMenuTitle::DrawContent() { @@ -226,21 +212,16 @@ TDeskbarMenuTitle::FetchIcon() } 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); - if (fVectorIconData != NULL && fVectorIconSize > 0 && icon != NULL + if (fVectorIconData != NULL && fVectorIconSize > 0 && BIconUtils::GetVectorIcon(fVectorIconData, fVectorIconSize, icon) == B_OK) { // rasterized vector icon into a bitmap - SetIcon(icon); + fIcon = icon; } else { // fetched bitmap instead - const BBitmap* leaf = AppResSet()->FindBitmap(B_MESSAGE_TYPE, - 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); + fIcon = AppResSet()->FindBitmap(B_MESSAGE_TYPE, R_LeafLogoBitmap); // TODO: scale the bitmap into icon delete icon; } diff --git a/src/apps/deskbar/BarMenuTitle.h b/src/apps/deskbar/BarMenuTitle.h index 7522283ffb..a4f68cd14d 100644 --- a/src/apps/deskbar/BarMenuTitle.h +++ b/src/apps/deskbar/BarMenuTitle.h @@ -76,9 +76,6 @@ class TDeskbarMenuTitle : public TBarMenuTitle { public: TDeskbarMenuTitle(float width, float height, const BBitmap* icon, BMenu* menu); - virtual ~TDeskbarMenuTitle(); - - virtual void SetIcon(const BBitmap* icon); virtual void DrawContent();