(GL) Cleanup gl_read_viewport

This commit is contained in:
twinaphex 2015-04-10 06:25:25 +02:00
parent 270f10ae04
commit a4f234e26e

View File

@ -2666,13 +2666,10 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
{ {
const uint8_t *ptr = NULL; const uint8_t *ptr = NULL;
/* Don't readback if we're in menu mode. */ /* Don't readback if we're in menu mode.
* We haven't buffered up enough frames yet, come back later. */
if (!gl->pbo_readback_valid[gl->pbo_readback_index]) if (!gl->pbo_readback_valid[gl->pbo_readback_index])
{ goto error;
/* We haven't buffered up enough frames yet, come back later. */
context_bind_hw_render(gl, true);
return false;
}
gl->pbo_readback_valid[gl->pbo_readback_index] = false; gl->pbo_readback_valid[gl->pbo_readback_index] = false;
glBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[gl->pbo_readback_index]); glBindBuffer(GL_PIXEL_PACK_BUFFER, gl->pbo_readback[gl->pbo_readback_index]);
@ -2699,16 +2696,14 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
else else
{ {
RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n"); RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n");
context_bind_hw_render(gl, true); goto error;
return false;
} }
#else #else
ptr = (const uint8_t*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY); ptr = (const uint8_t*)glMapBuffer(GL_PIXEL_PACK_BUFFER, GL_READ_ONLY);
if (!ptr) if (!ptr)
{ {
RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n"); RARCH_ERR("[GL]: Failed to map pixel unpack buffer.\n");
context_bind_hw_render(gl, true); goto error;
return false;
} }
scaler_ctx_scale(&gl->pbo_readback_scaler, buffer, ptr); scaler_ctx_scale(&gl->pbo_readback_scaler, buffer, ptr);
@ -2739,8 +2734,7 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
if (!gl->readback_buffer_screenshot) if (!gl->readback_buffer_screenshot)
{ {
RARCH_PERFORMANCE_STOP(read_viewport); RARCH_PERFORMANCE_STOP(read_viewport);
context_bind_hw_render(gl, true); goto error;
return false;
} }
rarch_render_cached_frame(); rarch_render_cached_frame();
@ -2762,6 +2756,10 @@ static bool gl_read_viewport(void *data, uint8_t *buffer)
RARCH_PERFORMANCE_STOP(read_viewport); RARCH_PERFORMANCE_STOP(read_viewport);
context_bind_hw_render(gl, true); context_bind_hw_render(gl, true);
return true; return true;
error:
context_bind_hw_render(gl, true);
return false;
} }
#endif #endif