summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/FramebufferManagerBase.cpp
diff options
context:
space:
mode:
authorMarkus Wick <degasus@users.noreply.github.com>2015-11-25 07:53:58 +0100
committerMarkus Wick <degasus@users.noreply.github.com>2015-11-25 07:53:58 +0100
commit662e4fcca061e3fe67a5d529fee5cbceee741797 (patch)
tree1413d32886af8194afd8a97ecf28715ab1d08666 /Source/Core/VideoCommon/FramebufferManagerBase.cpp
parentf560e8e283281d6130b2592617f2fe6453cebf83 (diff)
parent0b02dc4f814c4e842f460fd0814b8a7c5379b8c8 (diff)
Merge pull request #3276 from degasus/videocommon
Videocommon API cleanup
Diffstat (limited to 'Source/Core/VideoCommon/FramebufferManagerBase.cpp')
-rw-r--r--Source/Core/VideoCommon/FramebufferManagerBase.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/Source/Core/VideoCommon/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/FramebufferManagerBase.cpp
index 7981dfce4d..b01c39a5f3 100644
--- a/Source/Core/VideoCommon/FramebufferManagerBase.cpp
+++ b/Source/Core/VideoCommon/FramebufferManagerBase.cpp
@@ -59,9 +59,12 @@ const XFBSourceBase* const* FramebufferManagerBase::GetRealXFBSource(u32 xfbAddr
m_realXFBSource = nullptr;
}
- if (!m_realXFBSource)
+ if (!m_realXFBSource && g_framebuffer_manager)
m_realXFBSource = g_framebuffer_manager->CreateXFBSource(fbWidth, fbHeight, 1);
+ if (!m_realXFBSource)
+ return nullptr;
+
m_realXFBSource->srcAddr = xfbAddr;
m_realXFBSource->srcWidth = MAX_XFB_WIDTH;
@@ -118,13 +121,21 @@ const XFBSourceBase* const* FramebufferManagerBase::GetVirtualXFBSource(u32 xfbA
void FramebufferManagerBase::CopyToXFB(u32 xfbAddr, u32 fbStride, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma)
{
if (g_ActiveConfig.bUseRealXFB)
- g_framebuffer_manager->CopyToRealXFB(xfbAddr, fbStride, fbHeight, sourceRc, Gamma);
+ {
+ if (g_framebuffer_manager)
+ g_framebuffer_manager->CopyToRealXFB(xfbAddr, fbStride, fbHeight, sourceRc, Gamma);
+ }
else
+ {
CopyToVirtualXFB(xfbAddr, fbStride, fbHeight, sourceRc, Gamma);
+ }
}
void FramebufferManagerBase::CopyToVirtualXFB(u32 xfbAddr, u32 fbStride, u32 fbHeight, const EFBRectangle& sourceRc, float Gamma)
{
+ if (!g_framebuffer_manager)
+ return;
+
VirtualXFBListType::iterator vxfb = FindVirtualXFB(xfbAddr, sourceRc.GetWidth(), fbHeight);
if (m_virtualXFBList.end() == vxfb)
@@ -160,6 +171,9 @@ void FramebufferManagerBase::CopyToVirtualXFB(u32 xfbAddr, u32 fbStride, u32 fbH
if (!vxfb->xfbSource)
{
vxfb->xfbSource = g_framebuffer_manager->CreateXFBSource(target_width, target_height, m_EFBLayers);
+ if (!vxfb->xfbSource)
+ return;
+
vxfb->xfbSource->texWidth = target_width;
vxfb->xfbSource->texHeight = target_height;
}