Mesa (mesa_7_7_branch): st/xorg: move exaMoveInPixmap before trying to fetch it

Zack Rusin zack at kemper.freedesktop.org
Mon Jan 11 23:27:31 UTC 2010


Module: Mesa
Branch: mesa_7_7_branch
Commit: d880b64423d9eab7e6cbe3ad93dfefd6a9613cce
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d880b64423d9eab7e6cbe3ad93dfefd6a9613cce

Author: Zack Rusin <zackr at vmware.com>
Date:   Mon Jan 11 18:27:59 2010 -0500

st/xorg: move exaMoveInPixmap before trying to fetch it

as Michel suggested, this is a cleaner way of fixing crashes caused
by exaGetPixmapDriverPrivate returning null since the data hasn't
been moved yet.

---

 src/gallium/state_trackers/xorg/xorg_xv.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/gallium/state_trackers/xorg/xorg_xv.c b/src/gallium/state_trackers/xorg/xorg_xv.c
index 666ff10..a437370 100644
--- a/src/gallium/state_trackers/xorg/xorg_xv.c
+++ b/src/gallium/state_trackers/xorg/xorg_xv.c
@@ -485,9 +485,12 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv *pPriv, int id,
    int dxo, dyo;
    Bool hdtv;
    int x, y, w, h;
-   struct exa_pixmap_priv *dst = exaGetPixmapDriverPrivate(pPixmap);
+   struct exa_pixmap_priv *dst;
    struct pipe_surface *dst_surf = NULL;
 
+   exaMoveInPixmap(pPixmap);
+   dst = exaGetPixmapDriverPrivate(pPixmap);
+
    if (dst && !dst->tex) {
 	xorg_exa_set_shared_usage(pPixmap);
 	pScrn->pScreen->ModifyPixmapHeader(pPixmap, 0, 0, 0, 0, 0, NULL);
@@ -516,7 +519,6 @@ display_video(ScrnInfoPtr pScrn, struct xorg_xv_port_priv *pPriv, int id,
    bind_samplers(pPriv);
    setup_fs_video_constants(pPriv->r, hdtv);
 
-   exaMoveInPixmap(pPixmap);
    DamageDamageRegion(&pPixmap->drawable, dstRegion);
 
    while (nbox--) {




More information about the mesa-commit mailing list