From 6c3abad9f45fa53b38587e576f9dce6c91b65658 Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 18 Sep 2017 00:39:47 -0700 Subject: [PATCH] Fix crash in OpenVR mirror texture; --- src/graphics/shader.c | 2 +- src/headset/openvr.c | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/graphics/shader.c b/src/graphics/shader.c index 333defd5..5d6ca68e 100644 --- a/src/graphics/shader.c +++ b/src/graphics/shader.c @@ -218,7 +218,7 @@ void lovrShaderBind(Shader* shader, mat4 model, mat4 view, mat4 projection, Colo int dirtyView = force || memcmp(shader->view, view, 16 * sizeof(float)); int dirtyTransform = dirtyModel || dirtyView; int dirtyProjection = force || memcmp(shader->projection, projection, 16 * sizeof(float)); - int dirtyColor = force || memcmp(&shader->color, &color, 4 * sizeof(uint8_t)); + int dirtyColor = force || memcmp(&shader->color, &color, sizeof(Color)); if (dirtyModel) { int uniformId = lovrShaderGetUniformId(shader, "lovrModel"); diff --git a/src/headset/openvr.c b/src/headset/openvr.c index cafd6f7a..2f4aa98f 100644 --- a/src/headset/openvr.c +++ b/src/headset/openvr.c @@ -748,9 +748,19 @@ void lovrHeadsetRenderTo(headsetRenderCallback callback, void* userdata) { Color oldColor = lovrGraphicsGetColor(); lovrGraphicsSetColor((Color) { 255, 255, 255, 255 }); Shader* lastShader = lovrGraphicsGetShader(); + + if (lastShader) { + lovrRetain(&lastShader->ref); + } + lovrGraphicsSetShader(NULL); lovrGraphicsPlaneFullscreen(state.texture); lovrGraphicsSetShader(lastShader); + + if (lastShader) { + lovrRelease(&lastShader->ref); + } + lovrGraphicsSetColor(oldColor); } }