delete m_dllSwScale;
}
+bool CLinuxRendererGL::ValidateRenderer()
+{
+ if (!m_bConfigured)
+ return false;
+
+ // if its first pass, just init textures and return
+ if (ValidateRenderTarget())
+ return false;
+
+ // this needs to be checked after texture validation
+ if (!m_bImageReady)
+ return false;
+
+ int index = m_iYV12RenderBuffer;
+ YUVBUFFER& buf = m_buffers[index];
+
+ if (!buf.fields[FIELD_FULL][0].id)
+ return false;
+
+ if (buf.image.flags==0)
+ return false;
+
+ return true;
+}
+
+
void CLinuxRendererGL::ManageTextures()
{
m_NumYV12Buffers = 2;
void CLinuxRendererGL::RenderUpdate(bool clear, DWORD flags, DWORD alpha)
{
- if (!m_bConfigured) return;
-
- // if its first pass, just init textures and return
- if (ValidateRenderTarget())
- return;
-
- // this needs to be checked after texture validation
- if (!m_bImageReady) return;
-
int index = m_iYV12RenderBuffer;
- YUVBUFFER& buf = m_buffers[index];
- if (!buf.fields[FIELD_FULL][0].id) return ;
+ if (!ValidateRenderer())
+ {
+ if (clear) //if clear is set, we're expected to overwrite all backbuffer pixels, even if we have nothing to render
+ ClearBackBuffer();
- if (buf.image.flags==0)
return;
+ }
ManageDisplay();
ManageTextures();