mirror of
https://github.com/brl/mutter.git
synced 2024-11-23 00:20:42 -05:00
x11-tfp: don't call winsys x11_damage_notify without winsys
If we failed to create a native texture from pixmap via EGL or GLX then we shouldn't call the winsys's texture_pixmap_x11_damage_notify function. By doing the validation in cogl-texture-pixmap-x11.c the winsys code can continue to assume that it doesn't need to verify there is a valid tex_pixmap->winsys pointer. Thanks to Damien Leone <dleone@nvidia.com> for catching this issue. https://bugzilla.gnome.org/show_bug.cgi?id=660184
This commit is contained in:
parent
bdfaf94afb
commit
1f61868fed
@ -205,11 +205,14 @@ process_damage_event (CoglTexturePixmapX11 *tex_pixmap,
|
|||||||
damage_event->area.height);
|
damage_event->area.height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tex_pixmap->winsys)
|
||||||
|
{
|
||||||
/* If we're using the texture from pixmap extension then there's no
|
/* If we're using the texture from pixmap extension then there's no
|
||||||
point in getting the region and we can just mark that the texture
|
point in getting the region and we can just mark that the texture
|
||||||
needs updating */
|
needs updating */
|
||||||
winsys = _cogl_texture_pixmap_x11_get_winsys (tex_pixmap);
|
winsys = _cogl_texture_pixmap_x11_get_winsys (tex_pixmap);
|
||||||
winsys->texture_pixmap_x11_damage_notify (tex_pixmap);
|
winsys->texture_pixmap_x11_damage_notify (tex_pixmap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static CoglFilterReturn
|
static CoglFilterReturn
|
||||||
@ -420,7 +423,6 @@ cogl_texture_pixmap_x11_update_area (CoglHandle handle,
|
|||||||
int height)
|
int height)
|
||||||
{
|
{
|
||||||
CoglTexturePixmapX11 *tex_pixmap = COGL_TEXTURE_PIXMAP_X11 (handle);
|
CoglTexturePixmapX11 *tex_pixmap = COGL_TEXTURE_PIXMAP_X11 (handle);
|
||||||
const CoglWinsysVtable *winsys;
|
|
||||||
|
|
||||||
if (!cogl_is_texture_pixmap_x11 (handle))
|
if (!cogl_is_texture_pixmap_x11 (handle))
|
||||||
return;
|
return;
|
||||||
@ -429,8 +431,12 @@ cogl_texture_pixmap_x11_update_area (CoglHandle handle,
|
|||||||
texture because we can't determine which will be needed until we
|
texture because we can't determine which will be needed until we
|
||||||
actually render something */
|
actually render something */
|
||||||
|
|
||||||
|
if (tex_pixmap->winsys)
|
||||||
|
{
|
||||||
|
const CoglWinsysVtable *winsys;
|
||||||
winsys = _cogl_texture_pixmap_x11_get_winsys (tex_pixmap);
|
winsys = _cogl_texture_pixmap_x11_get_winsys (tex_pixmap);
|
||||||
winsys->texture_pixmap_x11_damage_notify (tex_pixmap);
|
winsys->texture_pixmap_x11_damage_notify (tex_pixmap);
|
||||||
|
}
|
||||||
|
|
||||||
cogl_damage_rectangle_union (&tex_pixmap->damage_rect,
|
cogl_damage_rectangle_union (&tex_pixmap->damage_rect,
|
||||||
x, y, width, height);
|
x, y, width, height);
|
||||||
|
Loading…
Reference in New Issue
Block a user