diff options
-rw-r--r-- | gsk/gl/gskgldriver.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/gsk/gl/gskgldriver.c b/gsk/gl/gskgldriver.c index a383344eae..b1f8d6ea0e 100644 --- a/gsk/gl/gskgldriver.c +++ b/gsk/gl/gskgldriver.c @@ -521,8 +521,15 @@ gsk_gl_driver_get_texture_for_texture (GskGLDriver *self, if (GDK_IS_GL_TEXTURE (texture)) { GdkGLContext *texture_context = gdk_gl_texture_get_context ((GdkGLTexture *)texture); + GdkGLContext *shared_context = gdk_gl_context_get_shared_context (self->gl_context); - if (texture_context != self->gl_context) + if (texture_context == self->gl_context || + (gdk_gl_context_get_shared_context (texture_context) == shared_context && shared_context != NULL)) + { + /* A GL texture from the same GL context is a simple task... */ + return gdk_gl_texture_get_id ((GdkGLTexture *)texture); + } + else { cairo_surface_t *surface; @@ -539,11 +546,6 @@ gsk_gl_driver_get_texture_for_texture (GskGLDriver *self, source_texture = downloaded_texture; } - else - { - /* A GL texture from the same GL context is a simple task... */ - return gdk_gl_texture_get_id ((GdkGLTexture *)texture); - } } else { |