Przeglądaj źródła

Merge pull request #1063 from Areloch/CICD_GFXDevice_Fix

This implements a fix to an issue with the CICD that causes a segfault.
Brian Roberts 2 lat temu
rodzic
commit
8a23392c97

+ 4 - 0
Engine/source/gfx/D3D11/gfxD3D11Device.cpp

@@ -252,6 +252,10 @@ DXGI_SWAP_CHAIN_DESC GFXD3D11Device::setupPresentParams(const GFXVideoMode &mode
 
 void GFXD3D11Device::enumerateAdapters(Vector<GFXAdapter*> &adapterList)
 {
+   S32 monitorCount = PlatformWindowManager::get()->getMonitorCount();
+   if (monitorCount < 1)
+      return;
+
    IDXGIAdapter1* EnumAdapter;
    IDXGIFactory1* DXGIFactory;
 

+ 4 - 0
Engine/source/gfx/gl/sdl/gfxGLDevice.sdl.cpp

@@ -77,6 +77,10 @@ void EnumerateVideoModes(Vector<GFXVideoMode>& outModes)
 
 void GFXGLDevice::enumerateAdapters( Vector<GFXAdapter*> &adapterList )
 {
+   S32 monitorCount = PlatformWindowManager::get()->getMonitorCount();
+   if (monitorCount < 1)
+      return;
+
    AssertFatal( SDL_WasInit(SDL_INIT_VIDEO), "");
 
    PlatformGL::init(); // for hints about context creation

+ 8 - 1
Engine/source/windowManager/test/windowManagerTest.cpp

@@ -28,9 +28,16 @@
 TEST(WinMgr, BasicAPI)
 {
    PlatformWindowManager *pwm = CreatePlatformWindowManager();
+   EXPECT_TRUE(pwm)
+      << "CreatePlatformWindowManager creation Failed!";
+   if (!pwm)
+      return;
 
-   ASSERT_TRUE(pwm)
+   S32 monitorCount = PlatformWindowManager::get()->getMonitorCount();
+   EXPECT_GT(monitorCount, 0)
       << "no monitor to test against!";
+   if (monitorCount == 0)
+      return;
 
    // Check out the primary desktop area...
    RectI primary = pwm->getPrimaryDesktopArea();