diff -ur -X excl mythtv-vid-18/libs/libmythtv/openglvideo.cpp mythtv-vid-18a/libs/libmythtv/openglvideo.cpp
--- mythtv-vid-18/libs/libmythtv/openglvideo.cpp	2008-07-04 08:38:54.000000000 +0800
+++ mythtv-vid-18a/libs/libmythtv/openglvideo.cpp	2008-07-05 10:00:28.000000000 +0800
@@ -275,8 +275,8 @@
         }
         else
         {
-            last_filter = false;
             it->second->outputBuffer = kDefaultBuffer;
+            last_filter = false;
         }
 
         buffers_needed = it->second->numInputs;
@@ -543,7 +543,7 @@
 }
 
 // locking ok
-void OpenGLVideo::UpdateInputFrame(const VideoFrame *frame)
+void OpenGLVideo::UpdateInputFrame(const VideoFrame *frame, bool soft_bob)
 {
     OpenGLContextLocker ctx_lock(gl_context);
 
@@ -560,7 +560,7 @@
     {
         gl_context->UpdateTexture(inputTextures[0], frame->buf,
                                   frame->offsets, frame->pitches, FMT_YV12,
-                                  frame->interlaced_frame);
+                                  frame->interlaced_frame && !soft_bob);
         inputUpdated = true;
         return;
     }
diff -ur -X excl mythtv-vid-18/libs/libmythtv/openglvideo.h mythtv-vid-18a/libs/libmythtv/openglvideo.h
--- mythtv-vid-18/libs/libmythtv/openglvideo.h	2008-07-04 08:34:13.000000000 +0800
+++ mythtv-vid-18a/libs/libmythtv/openglvideo.h	2008-07-04 08:48:20.000000000 +0800
@@ -61,7 +61,7 @@
               bool viewport_control, bool osd = FALSE,
               LetterBoxColour letterbox_colour = kLetterBoxColour_Black);
 
-    void UpdateInputFrame(const VideoFrame *frame);
+    void UpdateInputFrame(const VideoFrame *frame, bool soft_bob = FALSE);
     void UpdateInput(const unsigned char *buf, const int *offsets,
                      int format, QSize size,
                      const unsigned char *alpha);
diff -ur -X excl mythtv-vid-18/libs/libmythtv/videoout_xv.cpp mythtv-vid-18a/libs/libmythtv/videoout_xv.cpp
--- mythtv-vid-18/libs/libmythtv/videoout_xv.cpp	2008-07-03 21:55:01.000000000 +0800
+++ mythtv-vid-18a/libs/libmythtv/videoout_xv.cpp	2008-07-04 08:48:20.000000000 +0800
@@ -3796,8 +3796,10 @@
             DisplayOSD(frame, osd);
     }
 
+    bool soft_bob = m_deinterlacing && (m_deintfiltername == "bobdeint");
+
     if (gl_videochain)
-        gl_videochain->UpdateInputFrame(frame);
+        gl_videochain->UpdateInputFrame(frame, soft_bob);
 }
 
 void VideoOutputXv::ProcessFrameMem(VideoFrame *frame, OSD *osd,
Binary files mythtv-vid-18/programs/mythcommflag/mythcommflag and mythtv-vid-18a/programs/mythcommflag/mythcommflag differ

