diff options
author | Zack Rusin <zackr@vmware.com> | 2010-01-11 18:03:49 -0500 |
---|---|---|
committer | Zack Rusin <zackr@vmware.com> | 2010-01-11 18:03:49 -0500 |
commit | 3447d545d99c450c6a13d8a37e9cb9f5463a40eb (patch) | |
tree | 3a39f157bc450a9a6c9946c902a2894feb3d147d /src | |
parent | 61f7252448af24942ba9fffe6d792abc1f7d9f84 (diff) |
st/xorg: fix a rare video crash
sometimes dst isn't present if a window is in a middle of a resize, stop
crashing in those cases and just ignore a frame.
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/state_trackers/xorg/xorg_xv.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/state_trackers/xorg/xorg_xv.c b/src/gallium/state_trackers/xorg/xorg_xv.c index 19c50051a8..666ff104b9 100644 --- a/src/gallium/state_trackers/xorg/xorg_xv.c +++ b/src/gallium/state_trackers/xorg/xorg_xv.c @@ -486,7 +486,7 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv *pPriv, int id, Bool hdtv; int x, y, w, h; struct exa_pixmap_priv *dst = exaGetPixmapDriverPrivate(pPixmap); - struct pipe_surface *dst_surf = xorg_gpu_surface(pPriv->r->pipe->screen, dst); + struct pipe_surface *dst_surf = NULL; if (dst && !dst->tex) { xorg_exa_set_shared_usage(pPixmap); @@ -496,6 +496,7 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv *pPriv, int id, if (!dst || !dst->tex) XORG_FALLBACK("Xv destination %s", !dst ? "!dst" : "!dst->tex"); + dst_surf = xorg_gpu_surface(pPriv->r->pipe->screen, dst); hdtv = ((src_w >= RES_720P_X) && (src_h >= RES_720P_Y)); REGION_TRANSLATE(pScrn->pScreen, dstRegion, -pPixmap->screen_x, |