Merge pull request #8826 from zzmp/fix/failed-oculus-gl

avoid uninitialized oculus gl calls
This commit is contained in:
Chris Collins 2016-10-17 13:11:16 -07:00 committed by GitHub
commit 5b9606f0fc
4 changed files with 13 additions and 5 deletions

View file

@ -59,13 +59,15 @@ void OculusDisplayPlugin::customizeContext() {
ovrResult result = ovr_CreateTextureSwapChainGL(_session, &desc, &_textureSwapChain);
if (!OVR_SUCCESS(result)) {
logFatal("Failed to create swap textures");
logCritical("Failed to create swap textures");
return;
}
int length = 0;
result = ovr_GetTextureSwapChainLength(_session, _textureSwapChain, &length);
if (!OVR_SUCCESS(result) || !length) {
qFatal("Unable to count swap chain textures");
logCritical("Unable to count swap chain textures");
return;
}
for (int i = 0; i < length; ++i) {
GLuint chainTexId;
@ -83,6 +85,7 @@ void OculusDisplayPlugin::customizeContext() {
_sceneLayer.ColorTexture[0] = _textureSwapChain;
// not needed since the structure was zeroed on init, but explicit
_sceneLayer.ColorTexture[1] = nullptr;
_customized = true;
}
void OculusDisplayPlugin::uncustomizeContext() {
@ -98,10 +101,14 @@ void OculusDisplayPlugin::uncustomizeContext() {
ovr_DestroyTextureSwapChain(_session, _textureSwapChain);
_textureSwapChain = nullptr;
_outputFramebuffer.reset();
_customized = false;
Parent::uncustomizeContext();
}
void OculusDisplayPlugin::hmdPresent() {
if (!_customized) {
return;
}
PROFILE_RANGE_EX(__FUNCTION__, 0xff00ff00, (uint64_t)_currentFrame->frameIndex)

View file

@ -32,5 +32,6 @@ private:
static const QString NAME;
ovrTextureSwapChain _textureSwapChain;
gpu::FramebufferPointer _outputFramebuffer;
bool _customized { false };
};

View file

@ -39,12 +39,12 @@ void logWarning(const char* what) {
qWarning(oculus) << what << ":" << getError().ErrorString;
}
void logFatal(const char* what) {
void logCritical(const char* what) {
std::string error("[oculus] ");
error += what;
error += ": ";
error += getError().ErrorString;
qFatal(error.c_str());
qCritical(error.c_str());
}

View file

@ -15,7 +15,7 @@
#include <controllers/Forward.h>
void logWarning(const char* what);
void logFatal(const char* what);
void logCritical(const char* what);
bool oculusAvailable();
ovrSession acquireOculusSession();
void releaseOculusSession();