{
struct i915_context *i915 = i915_context( pipe );
- if (!--region->map_refcount) {
- i915->pipe.winsys->buffer_unmap( i915->pipe.winsys,
- region->buffer );
- region->map = NULL;
+ if (region->map_refcount > 0) {
+ assert(region->map);
+ if (!--region->map_refcount) {
+ i915->pipe.winsys->buffer_unmap( i915->pipe.winsys,
+ region->buffer );
+ region->map = NULL;
+ }
}
}
{
struct softpipe_context *sp = softpipe_context( pipe );
- if (!--region->map_refcount) {
- sp->pipe.winsys->buffer_unmap( sp->pipe.winsys,
- region->buffer );
- region->map = NULL;
+ if (region->map_refcount > 0) {
+ assert(region->map);
+ if (!--region->map_refcount) {
+ sp->pipe.winsys->buffer_unmap( sp->pipe.winsys,
+ region->buffer );
+ region->map = NULL;
+ }
}
}