Merge branch 'fix-glarea-transparency' into 'gtk-3-24'
Revert 7237f5d0eb
See merge request GNOME/gtk!7079
This commit is contained in:
commit
140e32da63
24
gdk/gdkgl.c
24
gdk/gdkgl.c
@ -540,6 +540,30 @@ gdk_cairo_draw_from_gl (cairo_t *cr,
|
|||||||
/* Translate to impl coords */
|
/* Translate to impl coords */
|
||||||
cairo_region_translate (clip_region, dx, dy);
|
cairo_region_translate (clip_region, dx, dy);
|
||||||
|
|
||||||
|
if (alpha_size != 0)
|
||||||
|
{
|
||||||
|
cairo_region_t *opaque_region, *blend_region;
|
||||||
|
|
||||||
|
opaque_region = cairo_region_copy (clip_region);
|
||||||
|
cairo_region_subtract (opaque_region, impl_window->current_paint.flushed_region);
|
||||||
|
cairo_region_subtract (opaque_region, impl_window->current_paint.need_blend_region);
|
||||||
|
|
||||||
|
if (!cairo_region_is_empty (opaque_region))
|
||||||
|
gdk_gl_texture_from_surface (impl_window->current_paint.surface,
|
||||||
|
opaque_region);
|
||||||
|
|
||||||
|
blend_region = cairo_region_copy (clip_region);
|
||||||
|
cairo_region_intersect (blend_region, impl_window->current_paint.need_blend_region);
|
||||||
|
|
||||||
|
glEnable (GL_BLEND);
|
||||||
|
if (!cairo_region_is_empty (blend_region))
|
||||||
|
gdk_gl_texture_from_surface (impl_window->current_paint.surface,
|
||||||
|
blend_region);
|
||||||
|
|
||||||
|
cairo_region_destroy (opaque_region);
|
||||||
|
cairo_region_destroy (blend_region);
|
||||||
|
}
|
||||||
|
|
||||||
glBindTexture (GL_TEXTURE_2D, source);
|
glBindTexture (GL_TEXTURE_2D, source);
|
||||||
|
|
||||||
if (gdk_gl_context_get_use_es (paint_context) ||
|
if (gdk_gl_context_get_use_es (paint_context) ||
|
||||||
|
Loading…
Reference in New Issue
Block a user