diff -U 3 -H -d -r -N -- recorditnow-0.8.1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.cpp recorditnow-0.8.1-0ubuntu1-alex1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.cpp --- recorditnow-0.8.1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.cpp 2010-03-04 17:39:20.000000000 +0100 +++ recorditnow-0.8.1-0ubuntu1-alex1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.cpp 2011-11-10 00:49:29.167932339 +0100 @@ -50,6 +50,7 @@ m_recorder = 0; m_paused = false; + m_forcestop = false; } @@ -188,8 +189,9 @@ void FfmpegRecorder::stop() { if (m_recorder) { - m_recorder->write("q\n"); + kill(m_recorder->pid(), SIGTERM); m_paused = false; + m_forcestop = true; } } @@ -312,10 +314,13 @@ const KProcess::ExitStatus status = m_recorder->exitStatus(); kDebug() << "status:" << status << "ret:" << ret; - if (status == KProcess::CrashExit || ret != 0) { - clean(); - emit finished(Crash); - return; + + if (!m_forcestop) { + if (status == KProcess::CrashExit || ret != 0) { + clean(); + emit finished(Crash); + return; + } } QFile outputFile(m_data.outputFile); diff -U 3 -H -d -r -N -- recorditnow-0.8.1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.h recorditnow-0.8.1-0ubuntu1-alex1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.h --- recorditnow-0.8.1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.h 2010-03-04 17:39:20.000000000 +0100 +++ recorditnow-0.8.1-0ubuntu1-alex1/src/plugins/recorder/ffmpegrecorder/ffmpegrecorder.h 2011-11-10 00:50:10.291932334 +0100 @@ -49,6 +49,7 @@ AbstractRecorder::Data m_data; QString m_tmpFile; bool m_paused; + bool m_forcestop; QString m_removeId; QString m_moveId;