From 719b32f1986c9dfbb878828549176fe737cd41e0 Mon Sep 17 00:00:00 2001 From: kamel5 Date: Thu, 8 Apr 2021 13:04:55 +0200 Subject: Fix segfault in cNopacitySetup::~cNopacitySetup() A segfault occurred when nOpacity is not the active skin and the plugin's setup page was exited. --- nopacity.c | 2 +- setup.c | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/nopacity.c b/nopacity.c index 3ca77d9..76c8ed0 100644 --- a/nopacity.c +++ b/nopacity.c @@ -58,7 +58,7 @@ cSkinDisplayMessage *cNopacity::DisplayMessage(void) { } void cNopacity::ReloadCaches(void) { - if (geoManager->SetOSDSize() || imgCache->ThemeChanged()) { + if (geoManager->SetOSDSize() || !imgCache || imgCache->ThemeChanged()) { int start = cTimeMs::Now(); config.Init(); geoManager->SetGeometry(); diff --git a/setup.c b/setup.c index a9135fb..6f749b8 100644 --- a/setup.c +++ b/setup.c @@ -1,3 +1,4 @@ +#include #include "setup.h" cNopacitySetup::cNopacitySetup(void) { @@ -8,14 +9,20 @@ cNopacitySetup::cNopacitySetup(void) { } cNopacitySetup::~cNopacitySetup(void) { - int start = cTimeMs::Now(); config.SetFontName(); - geoManager->SetGeometry(); delete fontManager; - fontManager = new cFontManager(); delete imgCache; - imgCache = new cImageCache(); - dsyslog("nopacity: Cache reloaded in %d ms", int(cTimeMs::Now()-start)); + cSkin *Skin = Skins.Get(Skins.Current()->Index()); + if (strcmp(Skin->Name(), "nOpacity") == 0) { + int start = cTimeMs::Now(); + geoManager->SetGeometry(); + fontManager = new cFontManager(); + imgCache = new cImageCache(); + dsyslog("nopacity: Cache reloaded in %d ms", int(cTimeMs::Now() - start)); + } else { + fontManager = NULL; + imgCache = NULL; + } } -- cgit v1.2.3