diff --git a/src/videopreview/async.diff b/src/videopreview/async.diff deleted file mode 100644 index 4f126842c..000000000 --- a/src/videopreview/async.diff +++ /dev/null @@ -1,309 +0,0 @@ -Index: videopreview/main.cpp -=================================================================== ---- videopreview/main.cpp (revisión: 2543) -+++ videopreview/main.cpp (copia de trabajo) -@@ -47,11 +47,17 @@ - */ - //vp.setAspectRatio( 2.35 ); - -+#if VIDEOPREVIEW_ASYNC -+ if (vp.showConfigDialog()) { -+ vp.createThumbnails(); -+ return a.exec(); -+ } -+#else - if ( (vp.showConfigDialog()) && (vp.createThumbnails()) ) { - vp.show(); - vp.adjustWindowSize(); - return a.exec(); - } -- -+#endif - return 0; - } -Index: videopreview/videopreview.cpp -=================================================================== ---- videopreview/videopreview.cpp (revisión: 2543) -+++ videopreview/videopreview.cpp (copia de trabajo) -@@ -105,7 +105,15 @@ - my_layout->addWidget(button_box); - setLayout(my_layout); - -+#if VIDEOPREVIEW_ASYNC -+ process = new QProcess(this); -+ connect( process, SIGNAL(finished(int, QProcess::ExitStatus)), -+ this, SLOT(processFinished(int, QProcess::ExitStatus)) ); - -+ connect( this, SIGNAL(finishedOk()), this, SLOT(workFinishedOK()) ); -+ connect( this, SIGNAL(finishedWithError()), this, SLOT(workFinishedWithError()) ); -+#endif -+ - QList r_formats = QImageReader::supportedImageFormats(); - QString read_formats; - for (int n=0; n < r_formats.count(); n++) { -@@ -156,6 +164,132 @@ - return "00000005.jpg"; - } - -+#if VIDEOPREVIEW_ASYNC -+void VideoPreview::createThumbnails() { -+ clearThumbnails(); -+ error_message.clear(); -+ -+ // Initalization -+ VideoInfo i = getInfo(mplayer_bin, prop.input_video); -+ int length = i.length; -+ -+ if (length == 0) { -+ if (error_message.isEmpty()) error_message = tr("The length of the video is 0"); -+ emit finishedWithError(); -+ return; -+ } -+ -+ // Create a temporary directory -+ QDir d(QDir::tempPath()); -+ if (!d.exists(output_dir)) { -+ if (!d.mkpath(output_dir)) { -+ qDebug("VideoPreview::extractImages: error: can't create '%s'", full_output_dir.toUtf8().constData()); -+ error_message = tr("The temporary directory (%1) can't be created").arg(full_output_dir); -+ emit finishedWithError(); -+ return; -+ } -+ } -+ -+ displayVideoInfo(i); -+ -+ // Let's begin -+ run.thumbnail_width = 0; -+ -+ run.num_pictures = prop.n_cols * prop.n_rows; -+ length -= prop.initial_step; -+ run.s_step = length / run.num_pictures; -+ -+ run.current_time = prop.initial_step; -+ -+ canceled = false; -+ progress->setLabelText(tr("Creating thumbnails...")); -+ progress->setRange(0, run.num_pictures-1); -+ -+ run.current_picture = 0; -+ progress->setValue( run.current_picture); -+ -+ if (!runMplayer(run.current_time)) { -+ emit finishedWithError(); -+ } -+} -+ -+void VideoPreview::processFinished(int exitCode, QProcess::ExitStatus exitStatus) { -+ qDebug("VideoPreview::processFinished"); -+ -+ if (exitStatus != QProcess::NormalExit) { -+ emit finishedWithError(); -+ return; -+ } -+ -+ // Continue processing -+ QString frame_picture = full_output_dir + "/" + framePicture(); -+ if (!QFile::exists(frame_picture)) { -+ error_message = tr("The file %1 doesn't exist").arg(frame_picture); -+ emit finishedWithError(); -+ return; -+ } -+ -+#if RENAME_PICTURES -+ QDir d(QDir::tempPath()); -+ QString extension = (extractFormat()==PNG) ? "png" : "jpg"; -+ QString output_file = output_dir + QString("/picture_%1.%2").arg(run.current_time, 8, 10, QLatin1Char('0')).arg(extension); -+ d.rename(output_dir + "/" + framePicture(), output_file); -+#else -+ QString output_file = output_dir + "/" + framePicture(); -+#endif -+ -+ if (!addPicture(QDir::tempPath() +"/"+ output_file, run.current_picture, run.current_time)) { -+ emit finishedWithError(); -+ return; -+ } -+ -+ run.current_time += run.s_step; -+ -+ if (canceled) { -+ emit finishedOk(); -+ return; -+ } -+ -+ // Next picture -+ run.current_picture++; -+ -+ if (run.current_picture >= run.num_pictures) { -+ emit finishedOk(); -+ return; -+ } -+ -+ progress->setValue( run.current_picture); -+ -+ if (!runMplayer(run.current_time)) { -+ emit finishedWithError(); -+ } -+} -+ -+void VideoPreview::workFinishedOK() { -+ qDebug("VideoPreview::workFinishedOK"); -+ -+ show(); -+ adjustWindowSize(); -+ -+ cleanDir(full_output_dir); -+} -+ -+void VideoPreview::workFinishedWithError() { -+ qDebug("VideoPreview::workFinishedWithError"); -+ -+ if (!error_message.isEmpty()) { -+ QMessageBox::critical(this, tr("Error"), -+ tr("The following error has occurred while creating the thumbnails:")+"\n"+ error_message ); -+ } -+ -+ cleanDir(full_output_dir); -+ -+ close(); -+} -+ -+ -+#else // VIDEOPREVIEW_ASYNC -+ - bool VideoPreview::createThumbnails() { - clearThumbnails(); - error_message.clear(); -@@ -244,6 +378,7 @@ - - return true; - } -+#endif // VIDEOPREVIEW_ASYNC - - bool VideoPreview::runMplayer(int seek) { - QStringList args; -@@ -283,6 +418,18 @@ - for (int n = 0; n < args.count(); n++) command = command + args[n] + " "; - qDebug("VideoPreview::runMplayer: command: %s", command.toUtf8().constData()); - -+#if VIDEOPREVIEW_ASYNC -+ #ifdef CD_TO_TEMP_DIR -+ process->setWorkingDirectory(full_output_dir); -+ qDebug("VideoPreview::runMplayer: changing working directory of the process to '%s'", full_output_dir.toUtf8().constData()); -+ #endif -+ process->start(mplayer_bin, args); -+ if (!process->waitForStarted()) { -+ qDebug("VideoPreview::runMplayer: error running process"); -+ error_message = tr("The mplayer process didn't run"); -+ return false; -+ } -+#else // VIDEOPREVIEW_ASYNC - QProcess p; - #ifdef CD_TO_TEMP_DIR - p.setWorkingDirectory(full_output_dir); -@@ -294,6 +441,7 @@ - error_message = tr("The mplayer process didn't run"); - return false; - } -+#endif // VIDEOPREVIEW_ASYNC - - return true; - } -Index: videopreview/videopreview.h -=================================================================== ---- videopreview/videopreview.h (revisión: 2543) -+++ videopreview/videopreview.h (copia de trabajo) -@@ -19,10 +19,16 @@ - #ifndef _VIDEOPREVIEW_H_ - #define _VIDEOPREVIEW_H_ - -+#define VIDEOPREVIEW_ASYNC 0 -+ - #include - #include - #include - -+#if VIDEOPREVIEW_ASYNC -+#include -+#endif -+ - class QProgressDialog; - class QGridLayout; - class QLabel; -@@ -90,7 +96,11 @@ - void setExtractFormat( ExtractFormat format ) { prop.extract_format = format; }; - ExtractFormat extractFormat() { return prop.extract_format; }; - -+#if VIDEOPREVIEW_ASYNC -+ void createThumbnails(); -+#else - bool createThumbnails(); -+#endif - - bool showConfigDialog(); - -@@ -106,8 +116,23 @@ - void cancelPressed(); - void saveImage(); - -+#if VIDEOPREVIEW_ASYNC -+ void processFinished(int exitCode, QProcess::ExitStatus exitStatus); -+ void workFinishedOK(); -+ void workFinishedWithError(); -+ - protected: -+ QProcess * process; -+ -+signals: -+ void finishedOk(); -+ void finishedWithError(); -+#endif -+ -+protected: -+#if !VIDEOPREVIEW_ASYNC - bool extractImages(); -+#endif - bool runMplayer(int seek); - bool addPicture(const QString & filename, int num, int time); - void displayVideoInfo(const VideoInfo & i); -@@ -144,9 +169,19 @@ - ExtractFormat extract_format; - } prop; - -+#if VIDEOPREVIEW_ASYNC - struct { - int thumbnail_width; -+ int num_pictures; -+ int s_step; -+ int current_time; -+ int current_picture; - } run; -+#else -+ struct { -+ int thumbnail_width; -+ } run; -+#endif - - QString last_directory; - QString error_message; -Index: basegui.cpp -=================================================================== ---- basegui.cpp (revisión: 2543) -+++ basegui.cpp (copia de trabajo) -@@ -4022,10 +4022,16 @@ - - video_preview->setMplayerPath(pref->mplayer_bin); - -+#if VIDEOPREVIEW_ASYNC -+ if (video_preview->showConfigDialog()) { -+ video_preview->createThumbnails(); -+ } -+#else - if ( (video_preview->showConfigDialog()) && (video_preview->createThumbnails()) ) { - video_preview->show(); - video_preview->adjustWindowSize(); - } -+#endif - } - - QNetworkProxy BaseGui::userProxy() {