Index: mythtv/libs/libmythtv/mpegrecorder.h
===================================================================
--- mythtv/libs/libmythtv/mpegrecorder.h	(revision 24074)
+++ mythtv/libs/libmythtv/mpegrecorder.h	(working copy)
@@ -34,6 +34,7 @@ class MpegRecorder : public DTVRecorder,
     void Initialize(void) {}
     void StartRecording(void);
     void StopRecording(void);
+    void FinishRecording(void);
     void Reset(void);
 
     void Pause(bool clear = true);
Index: mythtv/libs/libmythtv/mpegrecorder.cpp
===================================================================
--- mythtv/libs/libmythtv/mpegrecorder.cpp	(revision 24074)
+++ mythtv/libs/libmythtv/mpegrecorder.cpp	(working copy)
@@ -1386,13 +1386,19 @@ bool MpegRecorder::ProcessAVTSPacket(const TSPacke
 void MpegRecorder::StopRecording(void)
 {
     QMutexLocker locker(&recording_wait_lock);
-    if (recording)
+    if (recording && encoding)
     {
         encoding = false; // force exit from StartRecording() while loop
         recording_wait.wait(&recording_wait_lock);
     }
 }
 
+void MpegRecorder::FinishRecording(void)
+{
+	DTVRecorder::FinishRecording();
+	TeardownAll();
+}
+
 void MpegRecorder::ResetForNewFile(void)
 {
     DTVRecorder::ResetForNewFile();
