[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: Review Request: wetter.com Weather Ion
From:       "Will Stephenson" <wstephenson () kde ! org>
Date:       2009-11-02 21:13:32
Message-ID: 20091102211332.6657.46917 () localhost
[Download RAW message or body]



> On 2009-11-01 08:46:19, Will Stephenson wrote:
> > I don't see a reason for the first leak you highlight in your code.  You should \
> > create the url using QLatin1String as this saves QString having to guess the \
> > encoding -see http://labs.trolltech.com/blogs/2008/04/28/string-theory/ for \
> > details. 
> > The second leak is due to the main IonInterface (outside your code) leaking its \
> > d-pointer.  I can't see why it or your WetterComIon::Private need to be QObjects, \
> > when they don't do any QObject-type things, so I'd remove this unless I am wrong \
> > for some subtle reason.  I fixed this with r1043227 but you should probably also \
> > remove the QObject inheritance from your code.
> 
> Thilo-Alexander Ginkel wrote:
> Thanks for the info.
> 
> Regarding the QLatin1String: The wetter.com API requires the search term to be \
> passed as part of the URL, so I'd assume that using a QLatin1String for that URL \
> would break queries for non-western city names. Apart from that all those QString \
> usages make use of QString's .arg() method, for which QLatin1String provides no \
> replacement. I'd propose to use QString::fromLatin1 instead wherever possible, \
> which should get rid of the necessity to guess the encoding while preserving the \
> flexibility of QString. 
> I have removed the QObject inheritance in my current working copy.
> 
> Aaron Seigo wrote:
> the Ions are QObjects primarily for memory management; since the Ion plugins tend \
> to have signal/slot connections they'd end up subclassing QObject and so it just \
> made sense to make Ion a QObject as well and use the benefits inherent to that. \
> also, if we ever make scripted Ions, having Ion as a QObject makes it easier to \
> bind.

We're talking the Ion's pimpl class here, not the Ion itself.


- Will


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
http://reviewboard.kde.org/r/2026/#review2882
-----------------------------------------------------------


On 2009-11-01 18:31:18, Thilo-Alexander Ginkel wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> http://reviewboard.kde.org/r/2026/
> -----------------------------------------------------------
> 
> (Updated 2009-11-01 18:31:18)
> 
> 
> Review request for kdelibs, Plasma and Shawn Starr.
> 
> 
> Summary
> -------
> 
> This change brings support for wetter.com (a weather forecast web site especially \
> popular in Germany) as a weather data source to KDE. The Ion makes use of \
> wetter.com's officially-supported REST API. The API supports forecasts for up to \
> three days, so the Ion does not supply any information about the current weather \
> conditions. The forecast for the current day is split between night and day whereas \
> the following two days are provided as an aggregated value for the whole day, \
> respectively.  
> Any feedback is much appreciated!
> 
> 
> This addresses bug 204219.
> https://bugs.kde.org/show_bug.cgi?id=204219
> 
> 
> Diffs
> -----
> 
> /trunk/kdereview/plasma/dataengines/CMakeLists.txt 1043003 
> /trunk/kdereview/plasma/dataengines/weather/CMakeLists.txt PRE-CREATION 
> /trunk/kdereview/plasma/dataengines/weather/ions/CMakeLists.txt PRE-CREATION 
> /trunk/kdereview/plasma/dataengines/weather/ions/ion-wettercom.desktop PRE-CREATION \
>                 
> /trunk/kdereview/plasma/dataengines/weather/ions/ion_wettercom.h PRE-CREATION 
> /trunk/kdereview/plasma/dataengines/weather/ions/ion_wettercom.cpp PRE-CREATION 
> 
> Diff: http://reviewboard.kde.org/r/2026/diff
> 
> 
> Testing
> -------
> 
> Tested the Ion under a current KDE installation from trunk, fixed all Krazy \
> warnings before the move to kdereview. Profiled it for memory leaks using Valgrind, \
> which did not bring up any leaks in the control of the Ion. Those two still look \
> somewhat suspicious, so I'd like to get your opinion about them: 
> 42 bytes in 1 blocks are definitely lost in loss record 372 of 1,156
> at 0x4C25153: malloc (vg_replace_malloc.c:195)
> by 0x60EDCB4: QString::QString(int, Qt::Initialization) (qstring.cpp:1027)
> by 0x61BD5EE: QUtf8::convertToUnicode(char const*, int, \
> QTextCodec::ConverterState*) (qutfcodec.cpp:169) by 0x60EFDFA: \
> QString::fromUtf8(char const*, int) (qstring.cpp:3850) by 0x614C052: \
> fromPercentEncodingMutable(QByteArray*) (qurl.cpp:223) by 0x614EFB3: \
> QUrlPrivate::parse(QUrlPrivate::ParseOptions) const (qurl.cpp:3781) by 0x61534FE: \
> QUrl::isValid() const (qurl.cpp:4124) by 0x5A23B5A: KUrl::_setEncodedUrl(QByteArray \
> const&) (kurl.cpp:1538) by 0x5A23F19: KUrl::KUrl(QString const&) (kurl.cpp:411)
> by 0x1FAE37D6: WetterComIon::getForecast(QString const&) (ion_wettercom.cpp:504)
> by 0x1FAE5BAA: WetterComIon::updateIonSource(QString const&) \
> (ion_wettercom.cpp:320) by 0x1F267CBE: IonInterface::sourceRequestEvent(QString \
> const&) (ion.cpp:47) 
> 176 (32 direct, 144 indirect) bytes in 1 blocks are definitely lost in loss record \
> 882 of 1,156 at 0x4C2596C: operator new(unsigned long) (vg_replace_malloc.c:220)
> by 0x1F267795: IonInterface::IonInterface(QObject*, QList<QVariant> const&) \
> (ion.cpp:36) by 0x1FAE151D: WetterComIon::WetterComIon(QObject*, QList<QVariant> \
> const&) (ion_wettercom.cpp:68) by 0x1FAEE366: QObject* \
> KPluginFactory::createInstance<WetterComIon, QObject>(QWidget*, QObject*, \
> QList<QVariant> const&) (kpluginfactory.h:461) by 0x5B3367B: \
> KPluginFactory::create(char const*, QWidget*, QObject*, QList<QVariant> const&, \
> QString const&) (kpluginfactory.cpp:191) by 0x5594EB5: \
> Plasma::DataEngineManager::loadEngine(QString const&) (kpluginfactory.h:515) by \
> 0x1F6C813F: WeatherEngine::loadIon(QString const&) (weatherengine.cpp:92) by \
> 0x1F6C8C7C: WeatherEngine::sourceRequestEvent(QString const&) \
> (weatherengine.cpp:226) by 0x55913AC: \
> Plasma::DataEnginePrivate::requestSource(QString const&, bool*) \
> (dataengine.cpp:670) by 0x5591421: Plasma::DataEngine::connectSource(QString \
> const&, QObject*, unsigned int, Plasma::IntervalAlignment) const \
> (dataengine.cpp:89) by 0x1F05608D: WeatherPopupApplet::connectToEngine() \
> (weatherpopupapplet.cpp:234) by 0x1F05815E: WeatherPopupApplet::init() \
> (weatherpopupapplet.cpp:223) 
> 
> Thanks,
> 
> Thilo-Alexander
> 
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic