Only check for missmatched HWND process IDs if swap chain creation fails.
R=shannonwoods@chromium.org,zmo@chromium.org,jmadill@chromium.org
Review URL: https://codereview.appspot.com/14540050
diff --git a/src/libGLESv2/renderer/SwapChain11.cpp b/src/libGLESv2/renderer/SwapChain11.cpp
index a50db3b..2e0f0c2 100644
--- a/src/libGLESv2/renderer/SwapChain11.cpp
+++ b/src/libGLESv2/renderer/SwapChain11.cpp
@@ -465,18 +465,6 @@
if (mWindow)
{
- // We cannot create a swap chain for an HWND that is owned by a different process
- DWORD currentProcessId = GetCurrentProcessId();
- DWORD wndProcessId;
- GetWindowThreadProcessId(mWindow, &wndProcessId);
-
- if (currentProcessId != wndProcessId)
- {
- ERR("Could not create swap chain, window owned by different process");
- release();
- return EGL_BAD_NATIVE_WINDOW;
- }
-
IDXGIFactory *factory = mRenderer->getDxgiFactory();
DXGI_SWAP_CHAIN_DESC swapChainDesc = {0};
@@ -508,7 +496,21 @@
}
else
{
- return EGL_BAD_ALLOC;
+ // We cannot create a swap chain for an HWND that is owned by a different process on some versions of
+ // windows
+ DWORD currentProcessId = GetCurrentProcessId();
+ DWORD wndProcessId;
+ GetWindowThreadProcessId(mWindow, &wndProcessId);
+
+ if (currentProcessId != wndProcessId)
+ {
+ ERR("Could not create swap chain, window owned by different process");
+ return EGL_BAD_NATIVE_WINDOW;
+ }
+ else
+ {
+ return EGL_BAD_ALLOC;
+ }
}
}