From: Ivailo Monev Date: Mon, 14 Aug 2023 12:39:48 +0000 (+0300) Subject: kdeplasma-addons: unload the data engines from WeatherPopupApplet destructor X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=7ddfeb441089a950935ddfee8df98d2fab842947;p=kde%2Fkde-extraapps.git kdeplasma-addons: unload the data engines from WeatherPopupApplet destructor because the data engines are not parented to anything the destruction happens too late otherwise and triggers fatal message in Plasma::DataEngineManager that it is accessed after destruction Signed-off-by: Ivailo Monev --- diff --git a/kdeplasma-addons/containments/groupingdesktop/desktop/groupingdesktop.cpp b/kdeplasma-addons/containments/groupingdesktop/desktop/groupingdesktop.cpp index c8e60478..ad023758 100644 --- a/kdeplasma-addons/containments/groupingdesktop/desktop/groupingdesktop.cpp +++ b/kdeplasma-addons/containments/groupingdesktop/desktop/groupingdesktop.cpp @@ -23,7 +23,7 @@ K_EXPORT_PLASMA_APPLET(groupingdesktop, GroupingDesktop) GroupingDesktop::GroupingDesktop(QObject* parent, const QVariantList& args) - : GroupingContainment(parent, args) + : GroupingContainment(parent, args) { setHasConfigurationInterface(true); KGlobal::locale()->insertCatalog("libplasma_groupingcontainment"); diff --git a/kdeplasma-addons/containments/groupingdesktop/griddesktop/griddesktop.cpp b/kdeplasma-addons/containments/groupingdesktop/griddesktop/griddesktop.cpp index 6d71784a..e9292c9b 100644 --- a/kdeplasma-addons/containments/groupingdesktop/griddesktop/griddesktop.cpp +++ b/kdeplasma-addons/containments/groupingdesktop/griddesktop/griddesktop.cpp @@ -26,7 +26,7 @@ K_EXPORT_PLASMA_APPLET(griddesktop, GridDesktop) GridDesktop::GridDesktop(QObject* parent, const QVariantList& args) - : GroupingContainment(parent, args) + : GroupingContainment(parent, args) { setHasConfigurationInterface(true); KGlobal::locale()->insertCatalog("libplasma_groupingcontainment"); diff --git a/kdeplasma-addons/libs/plasmaweather/weatherpopupapplet.cpp b/kdeplasma-addons/libs/plasmaweather/weatherpopupapplet.cpp index 8c01cd24..950933b2 100644 --- a/kdeplasma-addons/libs/plasmaweather/weatherpopupapplet.cpp +++ b/kdeplasma-addons/libs/plasmaweather/weatherpopupapplet.cpp @@ -20,15 +20,14 @@ #include "weatherpopupapplet.h" #include "weatheri18ncatalog.h" -#include +#include "weatherconfig.h" +#include "weatherlocation.h" +#include #include #include - -#include - -#include "weatherconfig.h" -#include "weatherlocation.h" +#include +#include class WeatherPopupApplet::Private { @@ -125,10 +124,10 @@ public: QString conditionFromPressure() { - QString result; if (KPressure(0.0, pressureUnit).unitEnum() == KPressure::Invalid) { return QLatin1String( "weather-none-available" ); } + qreal temp = KTemperature(temperature, temperatureUnit).convertTo(KTemperature::Celsius); qreal p = KPressure(pressure, pressureUnit).convertTo(KPressure::Kilopascal); qreal t = tendency(pressure, tend); @@ -139,7 +138,7 @@ public: Plasma::DataEngine::Data data = timeEngine->query( QString(QLatin1String( "Local|Solar|Latitude=%1|Longitude=%2" )).arg(latitude).arg(longitude)); bool day = (data[QLatin1String( "Corrected Elevation" )].toDouble() > 0.0); - + QString result; if (p > 103.0) { if (day) { result = QLatin1String( "weather-clear" ); @@ -194,6 +193,18 @@ WeatherPopupApplet::WeatherPopupApplet(QObject *parent, const QVariantList &args WeatherPopupApplet::~WeatherPopupApplet() { + if (d->locationEngine) { + Plasma::DataEngineManager::self()->unloadEngine(QLatin1String("geolocation")); + d->locationEngine = nullptr; + } + if (d->weatherEngine) { + Plasma::DataEngineManager::self()->unloadEngine(QLatin1String("weather")); + d->weatherEngine = nullptr; + } + if (d->timeEngine) { + Plasma::DataEngineManager::self()->unloadEngine(QLatin1String("time")); + d->timeEngine = nullptr; + } delete d; }