X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fkthumb.cpp;h=5a81f5481ad789e159b7fdb8ce449faf0ece0773;hb=56aee6aedeeed3efd10ada8fe3c229eddc01ef05;hp=3d660b551bf18a7841c1b70560fd845b720a28a6;hpb=45adaf0e93ffa28bfeb3425a099ca95e70fd0d79;p=kdenlive diff --git a/src/kthumb.cpp b/src/kthumb.cpp index 3d660b55..5a81f548 100644 --- a/src/kthumb.cpp +++ b/src/kthumb.cpp @@ -40,6 +40,7 @@ #include #include #include +#include KThumb::KThumb(ClipManager *clipManager, const KUrl &url, const QString &id, const QString &hash, QObject * parent) : QObject(parent), @@ -218,6 +219,10 @@ QImage KThumb::getFrame(Mlt::Frame *frame, int frameWidth, int displayWidth, int if (ow % 2 == 1) ow++; QImage image(ow, oh, QImage::Format_ARGB32_Premultiplied); const uchar* imagedata = frame->get_image(format, ow, oh); + if (imagedata == NULL) { + p.fill(QColor(Qt::red).rgb()); + return p; + } memcpy(image.bits(), imagedata, ow * oh * 4);//.byteCount()); //const uchar* imagedata = frame->get_image(format, ow, oh); @@ -372,6 +377,10 @@ void KThumb::queryIntraThumbs(const QList &missingFrames) void KThumb::slotGetIntraThumbs() { + // We are in a new thread, so we need a new OpenGL context for the remainder of the function. + QGLWidget ctx(0, m_clipManager->getMainContext()); + ctx.makeCurrent(); + const int theight = KdenliveSettings::trackheight(); const int frameWidth = (int)(theight * m_ratio + 0.5); const int displayWidth = (int)(theight * m_dar + 0.5);