summaryrefslogtreecommitdiffstats
path: root/Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp')
-rw-r--r--Source/ThirdParty/ANGLE/src/libGLESv2/Fence.cpp26
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);