[mythtv] Re: Myth Theme Memory Usage

Alan Gonzalez alandgonzalez at gmail.com
Wed Dec 8 23:05:01 UTC 2004


I looked at mythcontext.cpp

At first glance I noticed a small memory issue that probably doesn't
have much to do with this issue, just thought I'd mention it.   This
is in function:  MythContext::CacheThemeImagesDirectory

       if (!cacheinfo.exists() ||
            (cacheinfo.lastModified() < fi->lastModified()))
        {
            VERBOSE(VB_FILE, QString("generating cache image for: %1")
                    .arg(fi->absFilePath()));

            QImage *tmpimage = LoadScaleImage(fi->absFilePath(), false);

            if (tmpimage && tmpimage->width() > 0 && tmpimage->height() > 0)
            {
                if (!tmpimage->save(destdir + filename, "PNG"))
                {
                    cerr << "Couldn't save cache cache image: "
                         << d->themecachedir + filename << endl;
                }
            
---->  take delete this out of if block
                delete tmpimage;
            }
         }

This code block should have the 'delete tmpimage' outside of the if
statement.   It's ok to delete null values and it's ok to delete
allocated values.  The current implementation leaks memory if an image
has either width or height == 0.

Maybe someone can fix this issue without me having to submit a diff? 
If not, I can submit a patch.

Alan

On Wed, 8 Dec 2004 13:46:09 -0800 (PST), Chris Tracy <mythtv at adiemus.org> wrote:
> 
>         Having fumbled my way through debugging the issue, I added some
> code in libs/libmyth/themedmenu.cpp to ThemedMenuPrivate::parseSettings().
> In the main while loop (around line 1255) I added a system() call to print
> out the memory usage of mythfrontend during each iteration through the
> loop.  What I found is that calls to ThemedMenuPrivate::parseButton()
> seemed to be the culprit.  Looking deeper, calls from parseButton() to
> MythContext::LoadScaleImage() were to blame, but only when loading
> watermark images and then only in certain cases.


More information about the mythtv-dev mailing list