Fix T39420: Cycles viewport/preview flickers, when moving mouse across editors
Issue was caused by the wrong usage of OCIO GLSL binding API. To make it work properly on pre-GLSL-1.3 drivers shader is to be enabled after the texture is binded to the opengl context. Otherwise it wouldn't know the proper texture size. This is actually a regression in 2.70 and to be ported to 'a'.
This commit is contained in:
@@ -53,7 +53,8 @@ void Device::pixels_free(device_memory& mem)
|
||||
mem_free(mem);
|
||||
}
|
||||
|
||||
void Device::draw_pixels(device_memory& rgba, int y, int w, int h, int dy, int width, int height, bool transparent)
|
||||
void Device::draw_pixels(device_memory& rgba, int y, int w, int h, int dy, int width, int height, bool transparent,
|
||||
const DeviceDrawParams &draw_params)
|
||||
{
|
||||
pixels_copy_from(rgba, y, w, h);
|
||||
|
||||
@@ -80,6 +81,10 @@ void Device::draw_pixels(device_memory& rgba, int y, int w, int h, int dy, int w
|
||||
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
if(draw_params.bind_display_space_shader_cb) {
|
||||
draw_params.bind_display_space_shader_cb();
|
||||
}
|
||||
|
||||
glPushMatrix();
|
||||
glTranslatef(0.0f, (float)dy, 0.0f);
|
||||
|
||||
@@ -98,6 +103,10 @@ void Device::draw_pixels(device_memory& rgba, int y, int w, int h, int dy, int w
|
||||
|
||||
glPopMatrix();
|
||||
|
||||
if(draw_params.unbind_display_space_shader_cb) {
|
||||
draw_params.unbind_display_space_shader_cb();
|
||||
}
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glDeleteTextures(1, &texid);
|
||||
|
||||
Reference in New Issue
Block a user