st/xorg: fix a rare video crash
authorZack Rusin <zackr@vmware.com>
Mon, 11 Jan 2010 23:03:49 +0000 (18:03 -0500)
committerZack Rusin <zackr@vmware.com>
Mon, 11 Jan 2010 23:03:49 +0000 (18:03 -0500)
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.

src/gallium/state_trackers/xorg/xorg_xv.c

index 19c50051a85a23f3e7a2c902614558d55009ef62..666ff104b97e36dc66393cdf8757f951d94b14ef 100644 (file)
@@ -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,