From 0f26cdd31bba90041f74a5a65973f52dcdf5db63 Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 21 Nov 2015 10:45:26 +0100 Subject: FramebufferManager: Allow CreateXFBSource to return nullptr --- Source/Core/VideoCommon/FramebufferManagerBase.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Source/Core/VideoCommon/FramebufferManagerBase.cpp') diff --git a/Source/Core/VideoCommon/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/FramebufferManagerBase.cpp index 7981dfce4d..48106844cd 100644 --- a/Source/Core/VideoCommon/FramebufferManagerBase.cpp +++ b/Source/Core/VideoCommon/FramebufferManagerBase.cpp @@ -62,6 +62,9 @@ const XFBSourceBase* const* FramebufferManagerBase::GetRealXFBSource(u32 xfbAddr if (!m_realXFBSource) m_realXFBSource = g_framebuffer_manager->CreateXFBSource(fbWidth, fbHeight, 1); + if (!m_realXFBSource) + return nullptr; + m_realXFBSource->srcAddr = xfbAddr; m_realXFBSource->srcWidth = MAX_XFB_WIDTH; @@ -160,6 +163,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; } -- cgit v1.2.3 From 0b02dc4f814c4e842f460fd0814b8a7c5379b8c8 Mon Sep 17 00:00:00 2001 From: degasus Date: Sat, 21 Nov 2015 16:11:36 +0100 Subject: FramebufferManager: check for g_framebuffer_manager --- Source/Core/VideoCommon/FramebufferManagerBase.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'Source/Core/VideoCommon/FramebufferManagerBase.cpp') diff --git a/Source/Core/VideoCommon/FramebufferManagerBase.cpp b/Source/Core/VideoCommon/FramebufferManagerBase.cpp index 48106844cd..b01c39a5f3 100644 --- a/Source/Core/VideoCommon/FramebufferManagerBase.cpp +++ b/Source/Core/VideoCommon/FramebufferManagerBase.cpp @@ -59,7 +59,7 @@ 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) @@ -121,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) -- cgit v1.2.3