diff --git a/src/omap_dri2.c b/src/omap_dri2.c
index 45a303e..bb6ae61 100644
--- a/src/omap_dri2.c
+++ b/src/omap_dri2.c
@@ -416,38 +416,39 @@
 		return;
 
 	if ((cmd->flags & OMAP_SWAP_FAIL) == 0) {
+		if (cmd->type != DRI2_BLIT_COMPLETE && (cmd->flags & OMAP_SWAP_FAKE_FLIP) == 0) {
+			assert(cmd->type == DRI2_FLIP_COMPLETE);
+			OMAPPixmapExchange(cmd->pSrcPixmap, cmd->pDstPixmap);
+		}
+
 		status = dixLookupDrawable(&pDraw, cmd->draw_id, serverClient,
 				M_ANY, DixWriteAccess);
-
 		if (status == Success) {
-			if (cmd->type != DRI2_BLIT_COMPLETE && (cmd->flags & OMAP_SWAP_FAKE_FLIP) == 0) {
-				assert(cmd->type == DRI2_FLIP_COMPLETE);
-				OMAPPixmapExchange(cmd->pSrcPixmap, cmd->pDstPixmap);
-			}
-
 			DRI2SwapComplete(cmd->client, pDraw, 0, 0, 0, cmd->type,
 					cmd->func, cmd->data);
+		} else {
+			DEBUG_MSG("dixLookupDrawable failed: %d", status);
+		}
 
-			if (cmd->type == DRI2_BLIT_COMPLETE) {
-				/* For blits, invalidate the per-crtc scanouts.
-				 */
-				for (i = 0; i < MAX_SCANOUTS; i++) {
-					pOMAP->scanouts[i].valid = FALSE;
+		if (cmd->type == DRI2_BLIT_COMPLETE) {
+			/* For blits, invalidate the per-crtc scanouts.
+			 */
+			for (i = 0; i < MAX_SCANOUTS; i++) {
+				pOMAP->scanouts[i].valid = FALSE;
+			}
+		} else {
+			assert(cmd->type == DRI2_FLIP_COMPLETE);
+			dst_priv = exaGetPixmapDriverPrivate(cmd->pDstPixmap);
+			/* For flips, validate the per-crtc scanout.
+			 */
+			for (i = 0; i < MAX_SCANOUTS; i++) {
+				if (pOMAP->scanouts[i].bo == dst_priv->bo) {
+					pOMAP->scanouts[i].valid = TRUE;
+					break;
 				}
-			} else {
-				assert(cmd->type == DRI2_FLIP_COMPLETE);
-				dst_priv = exaGetPixmapDriverPrivate(cmd->pDstPixmap);
-				/* For flips, validate the per-crtc scanout.
-				 */
-				for (i = 0; i < MAX_SCANOUTS; i++) {
-					if (pOMAP->scanouts[i].bo == dst_priv->bo) {
-						pOMAP->scanouts[i].valid = TRUE;
-						break;
-					}
-				}
-				if ((cmd->flags & OMAP_SWAP_FAKE_FLIP) == 0) {
-					drmmode_scanout_set(pOMAP->scanouts, cmd->x, cmd->y, dst_priv->bo);
-				}
+			}
+			if ((cmd->flags & OMAP_SWAP_FAKE_FLIP) == 0) {
+				drmmode_scanout_set(pOMAP->scanouts, cmd->x, cmd->y, dst_priv->bo);
 			}
 		}
 	}
