diff --git a/mythtv/libs/libmythtv/videoout_vdpau.cpp b/mythtv/libs/libmythtv/videoout_vdpau.cpp
index 6ef4185..9494f60 100644
--- a/mythtv/libs/libmythtv/videoout_vdpau.cpp
+++ b/mythtv/libs/libmythtv/videoout_vdpau.cpp
@@ -94,11 +94,14 @@ bool VideoOutputVDPAU::Init(const QSize &video_dim_buf,
                             WId winid, const QRect &win_rect,
                             MythCodecID codec_id)
 {
-    // Attempt to free up as much video memory as possible
-    // only works when using the VDPAU painter for the UI
-    MythPainter *painter = GetMythPainter();
-    if (painter)
-        painter->FreeResources();
+    if (!m_win) // Only if this is the first initialization
+    {
+        // Attempt to free up as much video memory as possible
+        // only works when using the VDPAU painter for the UI
+        MythPainter *painter = GetMythPainter();
+        if (painter)
+            painter->FreeResources();
+    }
 
     m_win = winid;
     QMutexLocker locker(&m_lock);
