Index: libs/libmythtv/openglcontext.cpp
===================================================================
--- libs/libmythtv/openglcontext.cpp	(revision 12778)
+++ libs/libmythtv/openglcontext.cpp	(working copy)
@@ -45,6 +45,7 @@
 
 OpenGLContext::~OpenGLContext()
 {
+    MakeCurrent(true);
     if (m_priv->m_glx_context)
     {
         DeletePrograms();
Index: libs/libmythtv/openglvideo.h
===================================================================
--- libs/libmythtv/openglvideo.h	(revision 12778)
+++ libs/libmythtv/openglvideo.h	(working copy)
@@ -17,7 +17,6 @@
     // Conversion filters
     kGLFilterYUV2RGB,
     kGLFilterYUV2RGBA,
-    kGLFilterResize,
 
     // Frame rate preserving deinterlacers
     kGLFilterLinearBlendDeint,
@@ -29,6 +28,9 @@
     kGLFilterLinearBlendDeintDFR,
     kGLFilterKernelDeintDFR,
     kGLFilterOneFieldDeintDFR,
+
+    // Frame scaling/resizing filters
+    kGLFilterResize,
 };
 
 enum DisplayBuffer
Index: libs/libmythtv/openglvideo.cpp
===================================================================
--- libs/libmythtv/openglvideo.cpp	(revision 12778)
+++ libs/libmythtv/openglvideo.cpp	(working copy)
@@ -753,7 +753,7 @@
     {
         it->second->outputBuffer = kFrameBufferObject;
 
-        if ((it->first >= kGLFilterKernelDeint) &&
+        if ((it->first >= kGLFilterLinearBlendDeint) &&
             (it->first <= kGLFilterOneFieldDeintDFR) &&
             !deinterlacing)
         {
@@ -807,7 +807,7 @@
         // skip colour conversion for frames already in frame buffer
         if (!inputUpdated && (frame == currentFrameNum) &&
             (type == kGLFilterYUV2RGB) && (frame != 0) &&
-            (!softwareDeinterlacing || (softwareDeinterlacer != "bobdeint")))
+            (!(softwareDeinterlacing && softwareDeinterlacer == "bobdeint")))
         {
             inputs = filter->frameBufferTextures;
             inputsize = videoSize;
Index: libs/libmythtv/videoout_xv.cpp
===================================================================
--- libs/libmythtv/videoout_xv.cpp	(revision 12778)
+++ libs/libmythtv/videoout_xv.cpp	(working copy)
@@ -834,6 +834,11 @@
         else
         {
             video_output_subtype = OpenGL;
+            // ensure deinterlacing is re-enabled after input change
+            bool temp_deinterlacing = m_deinterlacing;
+            SetDeinterlacingEnabled(false);
+            if (temp_deinterlacing)
+                SetDeinterlacingEnabled(temp_deinterlacing);
         }
     }
 
