Skip to content

Commit 77b8677

Browse files
committed
Fix memory leak in nvgImage
1 parent 32dbc73 commit 77b8677

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

Source/NVGSurface.h

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -275,15 +275,7 @@ class NVGImage {
275275

276276
~NVGImage()
277277
{
278-
if (subImages.size() && nvg) {
279-
for (auto const& subImage : subImages) {
280-
if (auto* surface = NVGSurface::getSurfaceForContext(nvg)) {
281-
surface->makeContextActive();
282-
}
283-
284-
nvgDeleteImage(nvg, subImage.imageId);
285-
}
286-
}
278+
deleteImage();
287279
allImages.erase(this);
288280
}
289281

@@ -315,6 +307,21 @@ class NVGImage {
315307
loadJUCEImage(nvg, componentImage);
316308
render(nvg, { 0, 0, component.getWidth(), component.getHeight() });
317309
}
310+
311+
312+
void deleteImage()
313+
{
314+
if (subImages.size() && nvg) {
315+
for (auto const& subImage : subImages) {
316+
if (auto* surface = NVGSurface::getSurfaceForContext(nvg)) {
317+
surface->makeContextActive();
318+
}
319+
320+
nvgDeleteImage(nvg, subImage.imageId);
321+
}
322+
subImages.clear();
323+
}
324+
}
318325

319326
void loadJUCEImage(NVGcontext* context, Image& image, int const repeatImage = false, int const withMipmaps = false)
320327
{
@@ -349,14 +356,14 @@ class NVGImage {
349356
else if (image.isSingleChannel())
350357
subImage.imageId = nvgCreateImageAlpha(nvg, totalWidth, totalHeight, flags, imageData.data);
351358

352-
subImages.clear();
359+
deleteImage();
353360

354361
subImage.bounds = image.getBounds();
355362
subImages.add(subImage);
356363
return;
357364
}
358365

359-
subImages.clear();
366+
deleteImage();
360367

361368
int x = 0;
362369
while (x < totalWidth) {

0 commit comments

Comments
 (0)