~ubuntu-branches/ubuntu/quantal/kdegames/quantal

« back to all changes in this revision

Viewing changes to libkdegames/kgamerenderer.cpp

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2011-12-15 14:17:50 UTC
  • mfrom: (1.3.14)
  • Revision ID: package-import@ubuntu.com-20111215141750-6tj6brf4azhrt915
Tags: 4:4.7.90-0ubuntu1
new upstream beta release

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
#include <QtCore/QCoreApplication>
25
25
#include <QtCore/QDateTime>
26
26
#include <QtCore/QFileInfo>
 
27
#include <QtCore/QScopedPointer>
27
28
#include <QtGui/QPainter>
28
29
#include <KDebug>
29
30
 
178
179
        //open cache (and SVG file, if necessary)
179
180
        if (m_strategies & KGameRenderer::UseDiskCache)
180
181
        {
181
 
                KImageCache* oldCache = m_imageCache;
 
182
                QScopedPointer<KImageCache> oldCache(m_imageCache);
182
183
                const QString imageCacheName = cacheName(m_theme.fileName());
183
184
                m_imageCache = new KImageCache(imageCacheName, m_cacheSize);
184
185
                m_imageCache->setPixmapCaching(false); //see big comment in KGRPrivate class declaration
196
197
                if (cacheTimestamp < svgTimestamp)
197
198
                {
198
199
                        kDebug(11000) << "Theme newer than cache, checking SVG";
199
 
                        QSvgRenderer* renderer = new QSvgRenderer(m_theme.graphics());
 
200
                        QScopedPointer<QSvgRenderer> renderer(new QSvgRenderer(m_theme.graphics()));
200
201
                        if (renderer->isValid())
201
202
                        {
202
 
                                m_rendererPool.setPath(m_theme.graphics(), renderer);
 
203
                                m_rendererPool.setPath(m_theme.graphics(), renderer.take());
203
204
                                m_imageCache->insert(QString::fromLatin1("kgr_timestamp"), QByteArray::number(svgTimestamp));
204
205
                        }
205
206
                        else
208
209
                                //breaking the previous theme.
209
210
                                delete m_imageCache;
210
211
                                KSharedDataCache::deleteCache(imageCacheName);
211
 
                                m_imageCache = oldCache;
 
212
                                m_imageCache = oldCache.take();
212
213
                                kDebug(11000) << "Theme change failed: SVG file broken";
213
214
                                return false;
214
215
                        }
220
221
        else // !(m_strategies & KGameRenderer::UseDiskCache) -> no cache is used
221
222
        {
222
223
                //load SVG file
223
 
                QSvgRenderer* renderer = new QSvgRenderer(m_theme.graphics());
 
224
                QScopedPointer<QSvgRenderer> renderer(new QSvgRenderer(m_theme.graphics()));
224
225
                if (renderer->isValid())
225
226
                {
226
 
                        m_rendererPool.setPath(m_theme.graphics(), renderer);
 
227
                        m_rendererPool.setPath(m_theme.graphics(), renderer.take());
227
228
                }
228
229
                else
229
230
                {
475
476
        job->elementKey = elementKey;
476
477
        job->spec = spec;
477
478
        const bool synchronous = !client;
478
 
        KGRInternal::Worker* worker = new KGRInternal::Worker(job, synchronous, this);
479
479
        if (synchronous || !(m_strategies & KGameRenderer::UseRenderingThreads))
480
480
        {
481
 
                worker->run();
 
481
                KGRInternal::Worker worker(job, true, this);
 
482
                worker.run();
482
483
                //if everything worked fine, result is in high-speed cache now
483
484
                const QPixmap result = m_pixmapCache.value(cacheKey);
484
 
                if (synchronousResult)
485
 
                {
486
 
                        *synchronousResult = result;
487
 
                }
488
 
                if (client)
489
 
                {
490
 
                        client->receivePixmap(result);
491
 
                }
 
485
                requestPixmap__propagateResult(result, client, synchronousResult);
492
486
        }
493
487
        else
494
488
        {