diff options
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp')
-rw-r--r-- | Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp b/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp index 7fbcb6a..14d1239 100644 --- a/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp +++ b/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp @@ -13,8 +13,9 @@ namespace gl { -Fence::Fence() -{ +Fence::Fence(egl::Display* display) +{ + mDisplay = display; mQuery = NULL; mCondition = GL_NONE; mStatus = GL_FALSE; @@ -24,8 +25,7 @@ Fence::~Fence() { if (mQuery != NULL) { - mQuery->Release(); - mQuery = NULL; + mDisplay->freeEventQuery(mQuery); } } @@ -38,15 +38,13 @@ GLboolean Fence::isFence() void Fence::setFence(GLenum condition) { - if (mQuery != NULL) + if (!mQuery) { - mQuery->Release(); - mQuery = NULL; - } - - if (FAILED(getDevice()->CreateQuery(D3DQUERYTYPE_EVENT, &mQuery))) - { - return error(GL_OUT_OF_MEMORY); + mQuery = mDisplay->allocateEventQuery(); + if (!mQuery) + { + return error(GL_OUT_OF_MEMORY); + } } HRESULT result = mQuery->Issue(D3DISSUE_END); @@ -65,7 +63,7 @@ GLboolean Fence::testFence() HRESULT result = mQuery->GetData(NULL, 0, D3DGETDATA_FLUSH); - if (result == D3DERR_DEVICELOST) + if (checkDeviceLost(result)) { return error(GL_OUT_OF_MEMORY, GL_TRUE); } @@ -110,7 +108,7 @@ void Fence::getFenceiv(GLenum pname, GLint *params) HRESULT result = mQuery->GetData(NULL, 0, 0); - if (result == D3DERR_DEVICELOST) + if (checkDeviceLost(result)) { params[0] = GL_TRUE; return error(GL_OUT_OF_MEMORY); |