From: Jean-Baptiste Mardelle Date: Sat, 9 Aug 2008 17:29:43 +0000 (+0000) Subject: Disable (until fixed) show frame on mouse move with razor tool. Fixes crash on clip... X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=7b7822c410a7a3958ff8d1480d720d35dc91a664;p=kdenlive Disable (until fixed) show frame on mouse move with razor tool. Fixes crash on clip cutting. svn path=/branches/KDE4/; revision=2370 --- diff --git a/src/clipitem.cpp b/src/clipitem.cpp index 624ea480..073132d5 100644 --- a/src/clipitem.cpp +++ b/src/clipitem.cpp @@ -390,21 +390,24 @@ void ClipItem::paint(QPainter *painter, painter->fillPath(resultClipPath, paintColor); painter->setClipPath(resultClipPath, Qt::IntersectClip); + // draw thumbnails - if (!m_startPix.isNull() && KdenliveSettings::videothumbnails()) { - if (m_clipType == IMAGE) { + if (KdenliveSettings::videothumbnails()) { + if (m_clipType == IMAGE && !m_startPix.isNull()) { painter->drawPixmap(QPointF(itemWidth - m_startPix.width(), 0), m_startPix); QLine l(itemWidth - m_startPix.width(), 0, itemWidth - m_startPix.width(), itemHeight); painter->drawLine(l); - } else { + } + else if (!m_endPix.isNull()) { painter->drawPixmap(QPointF(itemWidth - m_endPix.width(), 0), m_endPix); QLine l(itemWidth - m_endPix.width(), 0, itemWidth - m_endPix.width(), itemHeight); painter->drawLine(l); } - - painter->drawPixmap(QPointF(0, 0), m_startPix); - QLine l2(m_startPix.width(), 0, 0 + m_startPix.width(), itemHeight); - painter->drawLine(l2); + if (!m_startPix.isNull()) { + painter->drawPixmap(QPointF(0, 0), m_startPix); + QLine l2(m_startPix.width(), 0, 0 + m_startPix.width(), itemHeight); + painter->drawLine(l2); + } } // draw audio thumbnails diff --git a/src/customtrackview.cpp b/src/customtrackview.cpp index f9d12fbf..25228bc7 100644 --- a/src/customtrackview.cpp +++ b/src/customtrackview.cpp @@ -264,7 +264,8 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) { if (m_tool == RAZORTOOL) { // razor tool over a clip, display current frame in monitor if (!m_blockRefresh && item->type() == AVWIDGET) { - emit showClipFrame(((ClipItem *) item)->baseClip(), mapToScene(event->pos()).x() / m_scale - (clip->startPos() - clip->cropStart()).frames(m_document->fps())); + //TODO: solve crash when showing frame when moving razor over clip + //emit showClipFrame(((ClipItem *) item)->baseClip(), mapToScene(event->pos()).x() / m_scale - (clip->startPos() - clip->cropStart()).frames(m_document->fps())); } event->accept(); return; diff --git a/src/kthumb.cpp b/src/kthumb.cpp index ec3fea70..e83672bb 100644 --- a/src/kthumb.cpp +++ b/src/kthumb.cpp @@ -222,38 +222,39 @@ QPixmap KThumb::getImage(QDomElement xml, int frame, int width, int height) { //static QPixmap KThumb::getFrame(Mlt::Producer *producer, int framepos, int width, int height) { - kDebug() << "//REQUESTING FRAME: " << framepos; - if (producer == NULL) return QPixmap(); + if (producer == NULL) { + QPixmap p(width, height); + p.fill(Qt::red); + return p; + } + producer->seek(framepos); Mlt::Frame *frame = producer->get_frame(); if (!frame) { kDebug() << "///// BROKEN FRAME"; - return QPixmap(); + QPixmap p(width, height); + p.fill(Qt::red); + return p; } - kDebug() << "///// FRAME exists"; mlt_image_format format = mlt_image_yuv422; int frame_width = 0; int frame_height = 0; frame->set("normalised_height", height); frame->set("normalised_width", width); QPixmap pix(width, height); - kDebug() << "///// FRAME exists 2"; uint8_t *data = frame->get_image(format, frame_width, frame_height, 0); - kDebug() << "///// FRAME exists 2a"; uint8_t *new_image = (uint8_t *)mlt_pool_alloc(frame_width * (frame_height + 1) * 4); - kDebug() << "///// FRAME exists 2b"; mlt_convert_yuv422_to_rgb24a((uint8_t *)data, new_image, frame_width * frame_height); - kDebug() << "///// FRAME exists 2c"; + QImage image((uchar *)new_image, frame_width, frame_height, QImage::Format_ARGB32); - kDebug() << "///// FRAME exists 3"; + if (!image.isNull()) { pix = pix.fromImage(image.rgbSwapped()); } else - pix.fill(Qt::black); + pix.fill(Qt::red); mlt_pool_release(new_image); delete frame; - kDebug() << "//REQUESTING FRAME " << framepos << " OVER"; return pix; } /* diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 65c78640..a3286563 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -191,7 +191,7 @@ MainWindow::MainWindow(QWidget *parent) tabifyDockWidget(projectListDock, effectStackDock); tabifyDockWidget(projectListDock, transitionConfigDock); //tabifyDockWidget(projectListDock, undoViewDock); - projectListDock->raise(); + tabifyDockWidget(clipMonitorDock, projectMonitorDock); tabifyDockWidget(clipMonitorDock, recMonitorDock); @@ -281,6 +281,7 @@ MainWindow::MainWindow(QWidget *parent) } else newFile(); activateShuttleDevice(); + projectListDock->raise(); } void MainWindow::queryQuit() {