projects
/
vuplus_xbmc
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6fb2879
)
[3d] fix stretched gui in sbs/ou mode when using hq scalers
author
Anton Fedchin
<afedchin@ruswizards.com>
Thu, 23 Jan 2014 19:28:28 +0000
(23:28 +0400)
committer
Anton Fedchin
<afedchin@ruswizards.com>
Sun, 9 Feb 2014 21:10:50 +0000
(
01:10
+0400)
xbmc/cores/VideoRenderers/VideoShaders/WinVideoFilter.cpp
patch
|
blob
|
history
xbmc/cores/VideoRenderers/WinRenderer.cpp
patch
|
blob
|
history
xbmc/rendering/RenderSystem.h
patch
|
blob
|
history
xbmc/rendering/dx/RenderSystemDX.cpp
patch
|
blob
|
history
xbmc/rendering/dx/RenderSystemDX.h
patch
|
blob
|
history
diff --git
a/xbmc/cores/VideoRenderers/VideoShaders/WinVideoFilter.cpp
b/xbmc/cores/VideoRenderers/VideoShaders/WinVideoFilter.cpp
index
f619cba
..
17e9415
100644
(file)
--- a/
xbmc/cores/VideoRenderers/VideoShaders/WinVideoFilter.cpp
+++ b/
xbmc/cores/VideoRenderers/VideoShaders/WinVideoFilter.cpp
@@
-203,6
+203,10
@@
bool CWinShader::Execute(std::vector<LPDIRECT3DSURFACE9> *vecRT, unsigned int ve
oldRT->Release();
}
oldRT->Release();
}
+ // MSDN says: Setting a new render target will cause the viewport
+ // to be set to the full size of the new render target.
+ // So we need restore our viewport
+ g_Windowing.RestoreViewPort();
return true;
}
return true;
}
@@
-769,6
+773,10
@@
bool CConvolutionShaderSeparable::ClearIntermediateRenderTarget()
currentRT->Release();
intermediateRT->Release();
currentRT->Release();
intermediateRT->Release();
+ // MSDN says: Setting a new render target will cause the viewport
+ // to be set to the full size of the new render target.
+ // So we need restore our viewport
+ g_Windowing.RestoreViewPort();
return true;
}
return true;
}
diff --git
a/xbmc/cores/VideoRenderers/WinRenderer.cpp
b/xbmc/cores/VideoRenderers/WinRenderer.cpp
index
df7f27b
..
cc8fa4c
100644
(file)
--- a/
xbmc/cores/VideoRenderers/WinRenderer.cpp
+++ b/
xbmc/cores/VideoRenderers/WinRenderer.cpp
@@
-954,6
+954,11
@@
void CWinRenderer::Stage1()
// Restore the render target
pD3DDevice->SetRenderTarget(0, oldRT);
// Restore the render target
pD3DDevice->SetRenderTarget(0, oldRT);
+ // MSDN says: Setting a new render target will cause the viewport
+ // to be set to the full size of the new render target.
+ // So we need restore our viewport
+ g_Windowing.RestoreViewPort();
+
oldRT->Release();
newRT->Release();
}
oldRT->Release();
newRT->Release();
}
diff --git
a/xbmc/rendering/RenderSystem.h
b/xbmc/rendering/RenderSystem.h
index
2bceb67
..
fa64eba
100644
(file)
--- a/
xbmc/rendering/RenderSystem.h
+++ b/
xbmc/rendering/RenderSystem.h
@@
-108,6
+108,7
@@
public:
virtual void SetViewPort(CRect& viewPort) = 0;
virtual void GetViewPort(CRect& viewPort) = 0;
virtual void SetViewPort(CRect& viewPort) = 0;
virtual void GetViewPort(CRect& viewPort) = 0;
+ virtual void RestoreViewPort() {};
virtual void SetScissors(const CRect &rect) = 0;
virtual void ResetScissors() = 0;
virtual void SetScissors(const CRect &rect) = 0;
virtual void ResetScissors() = 0;
diff --git
a/xbmc/rendering/dx/RenderSystemDX.cpp
b/xbmc/rendering/dx/RenderSystemDX.cpp
index
654c23f
..
527ba8b
100644
(file)
--- a/
xbmc/rendering/dx/RenderSystemDX.cpp
+++ b/
xbmc/rendering/dx/RenderSystemDX.cpp
@@
-954,6
+954,14
@@
void CRenderSystemDX::SetViewPort(CRect& viewPort)
m_pD3DDevice->SetViewport(&m_viewPort);
}
m_pD3DDevice->SetViewport(&m_viewPort);
}
+void CRenderSystemDX::RestoreViewPort()
+{
+ if (!m_bRenderCreated)
+ return;
+
+ m_pD3DDevice->SetViewport(&m_viewPort);
+}
+
void CRenderSystemDX::SetScissors(const CRect& rect)
{
if (!m_bRenderCreated)
void CRenderSystemDX::SetScissors(const CRect& rect)
{
if (!m_bRenderCreated)
diff --git
a/xbmc/rendering/dx/RenderSystemDX.h
b/xbmc/rendering/dx/RenderSystemDX.h
index
197fc8f
..
0697bed
100644
(file)
--- a/
xbmc/rendering/dx/RenderSystemDX.h
+++ b/
xbmc/rendering/dx/RenderSystemDX.h
@@
-61,6
+61,7
@@
public:
virtual void SetViewPort(CRect& viewPort);
virtual void GetViewPort(CRect& viewPort);
virtual void SetViewPort(CRect& viewPort);
virtual void GetViewPort(CRect& viewPort);
+ virtual void RestoreViewPort();
virtual void SetScissors(const CRect &rect);
virtual void ResetScissors();
virtual void SetScissors(const CRect &rect);
virtual void ResetScissors();