} else {
BoxRec box;
+ if (bo != priv->gpu_bo) {
+ kgem_bo_destroy(&sna->kgem, bo);
+ bo = priv->gpu_bo;
+ }
+
box.x1 = box.y1 = 0;
box.x2 = pixmap->drawable.width;
box.y2 = pixmap->drawable.height;
bo, 0, 0,
src, stride, 0, 0,
&box, 1))
- goto err;
+ return false;
}
done:
}
return true;
-
-err:
- if (bo != priv->gpu_bo)
- kgem_bo_destroy(&sna->kgem, bo);
- return false;
}
bool
kgem_bo_undo(&sna->kgem, bo);
- if (kgem_bo_is_busy(bo)) {
+ if (!kgem_bo_can_map(&sna->kgem, bo) ||
+ __kgem_bo_is_busy(&sna->kgem, bo)) {
struct kgem_bo *new_bo;
new_bo = kgem_create_2d(&sna->kgem,
} else {
BoxRec box;
+ if (bo != priv->gpu_bo) {
+ kgem_bo_destroy(&sna->kgem, bo);
+ bo = priv->gpu_bo;
+ }
+
box.x1 = box.y1 = 0;
box.x2 = pixmap->drawable.width;
box.y2 = pixmap->drawable.height;
src, stride, 0, 0,
&box, 1,
and, or))
- goto err;
+ return false;
}
if (bo != priv->gpu_bo) {
}
return true;
-
-err:
- if (bo != priv->gpu_bo)
- kgem_bo_destroy(&sna->kgem, bo);
- return false;
}