]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Add explicit keyword, const'ref, minor optimization
[kdenlive] / src / renderer.cpp
index 352120833a1ffa99db3545d8c8970d51ed8edaa5..1087d8bcf6b18fc47975bbdc6e2b0b92d2f813b5 100644 (file)
@@ -140,9 +140,9 @@ Render::Render(Kdenlive::MONITORID rendererName, int winid, QString profile, QWi
     m_refreshTimer.setSingleShot(true);
     m_refreshTimer.setInterval(100);
     connect(&m_refreshTimer, SIGNAL(timeout()), this, SLOT(refresh()));
-    connect(this, SIGNAL(multiStreamFound(const QString &,QList<int>,QList<int>,stringMap)), this, SLOT(slotMultiStreamProducerFound(const QString &,QList<int>,QList<int>,stringMap)));
+    connect(this, SIGNAL(multiStreamFound(QString,QList<int>,QList<int>,stringMap)), this, SLOT(slotMultiStreamProducerFound(QString,QList<int>,QList<int>,stringMap)));
     connect(this, SIGNAL(checkSeeking()), this, SLOT(slotCheckSeeking()));
-    connect(this, SIGNAL(mltFrameReceived(Mlt::Frame *)), this, SLOT(showFrame(Mlt::Frame *)), Qt::UniqueConnection);
+    connect(this, SIGNAL(mltFrameReceived(Mlt::Frame*)), this, SLOT(showFrame(Mlt::Frame*)), Qt::UniqueConnection);
 }
 
 Render::~Render()
@@ -1899,7 +1899,7 @@ void Render::showFrame(Mlt::Frame* frame)
        delete frame;
        emit showImageSignal(qimage);
        if (sendFrameForAnalysis) {
-           emit frameUpdated(qimage);//.rgbSwapped());
+           emit frameUpdated(qimage);
        }
     } else delete frame;
     showFrameSemaphore.release();
@@ -2604,6 +2604,10 @@ int Render::mltChangeClipSpeed(ItemInfo info, ItemInfo speedIndependantInfo, dou
         newLength = trackPlaylist.clip_length(clipIndex);
         service.unlock();
     } else if (speed == 1.0 && strobe < 2) {
+       if (!prod || !prod->is_valid()) {
+           kDebug()<<"// Something is wrong with producer";
+           return -1;
+       }
         service.lock();
 
         Mlt::Producer *clip = trackPlaylist.replace_with_blank(clipIndex);
@@ -2852,7 +2856,7 @@ bool Render::mltAddEffect(Mlt::Service service, EffectsParameterList params, int
         filter = service.filter(ct);
     }
 
-    addFilterToService(service, params, duration);
+    bool success = addFilterToService(service, params, duration);
 
     // re-add following filters
     for (int i = 0; i < filtersList.count(); i++) {
@@ -2863,7 +2867,7 @@ bool Render::mltAddEffect(Mlt::Service service, EffectsParameterList params, int
     }
     service.unlock();
     if (doRefresh) refresh();
-    return true;
+    return success;
 }
 
 
@@ -2872,10 +2876,8 @@ bool Render::addFilterToService(Mlt::Service service, EffectsParameterList param
       // create filter
     QString tag =  params.paramValue("tag");
     //kDebug() << " / / INSERTING EFFECT: " << tag << ", REGI: " << region;
-    char *filterTag = qstrdup(tag.toUtf8().constData());
-    char *filterId = qstrdup(params.paramValue("id").toUtf8().constData());
     QString kfr = params.paramValue("keyframes");
-  if (!kfr.isEmpty()) {
+    if (!kfr.isEmpty()) {
         QStringList keyFrames = kfr.split(';', QString::SkipEmptyParts);
         //kDebug() << "// ADDING KEYFRAME EFFECT: " << params.paramValue("keyframes");
         char *starttag = qstrdup(params.paramValue("starttag", "start").toUtf8().constData());
@@ -2895,9 +2897,9 @@ bool Render::addFilterToService(Mlt::Service service, EffectsParameterList param
         int offset = 0;
         // Special case, only one keyframe, means we want a constant value
         if (keyFrames.count() == 1) {
-            Mlt::Filter *filter = new Mlt::Filter(*m_mltProfile, filterTag);
+            Mlt::Filter *filter = new Mlt::Filter(*m_mltProfile, qstrdup(tag.toUtf8().constData()));
             if (filter && filter->is_valid()) {
-                filter->set("kdenlive_id", filterId);
+                filter->set("kdenlive_id", qstrdup(params.paramValue("id").toUtf8().constData()));
                 int x1 = keyFrames.at(0).section(':', 0, 0).toInt();
                 double y1 = keyFrames.at(0).section(':', 1, 1).toDouble();
                 for (int j = 0; j < params.count(); j++) {
@@ -2907,11 +2909,17 @@ bool Render::addFilterToService(Mlt::Service service, EffectsParameterList param
                 //kDebug() << "// ADDING KEYFRAME vals: " << min<<" / "<<max<<", "<<y1<<", factor: "<<factor;
                 filter->set(starttag, m_locale.toString(((min + y1) - paramOffset) / factor).toUtf8().data());
                 service.attach(*filter);
-            }
+            } else {
+               delete[] starttag;
+               delete[] endtag;
+               kDebug() << "filter is NULL";
+               service.unlock();
+               return false;
+           }
         } else for (int i = 0; i < keyFrames.size() - 1; ++i) {
-                Mlt::Filter *filter = new Mlt::Filter(*m_mltProfile, filterTag);
+                Mlt::Filter *filter = new Mlt::Filter(*m_mltProfile, qstrdup(tag.toUtf8().constData()));
                 if (filter && filter->is_valid()) {
-                    filter->set("kdenlive_id", filterId);
+                    filter->set("kdenlive_id", qstrdup(params.paramValue("id").toUtf8().constData()));
                     int x1 = keyFrames.at(i).section(':', 0, 0).toInt() + offset;
                     double y1 = keyFrames.at(i).section(':', 1, 1).toDouble();
                     int x2 = keyFrames.at(i + 1).section(':', 0, 0).toInt();
@@ -2929,16 +2937,22 @@ bool Render::addFilterToService(Mlt::Service service, EffectsParameterList param
                     filter->set(endtag, m_locale.toString(((min + y2) - paramOffset) / factor).toUtf8().data());
                     service.attach(*filter);
                     offset = 1;
-                }
+                } else {
+                   delete[] starttag;
+                   delete[] endtag;
+                   kDebug() << "filter is NULL";
+                   service.unlock();
+                   return false;
+               }
             }
         delete[] starttag;
         delete[] endtag;
     } else {
         Mlt::Filter *filter;
         QString prefix;
-        filter = new Mlt::Filter(*m_mltProfile, filterTag);
+        filter = new Mlt::Filter(*m_mltProfile, qstrdup(tag.toUtf8().constData()));
         if (filter && filter->is_valid()) {
-            filter->set("kdenlive_id", filterId);
+            filter->set("kdenlive_id", qstrdup(params.paramValue("id").toUtf8().constData()));
         } else {
             kDebug() << "filter is NULL";
             service.unlock();
@@ -2973,9 +2987,6 @@ bool Render::addFilterToService(Mlt::Service service, EffectsParameterList param
         // attach filter to the clip
         service.attach(*filter);
     }
-       
-    delete[] filterId;
-    delete[] filterTag;
     return true;
 }