void sane_cancel (SANE_Handle handle) { V4L_Scanner *s = handle; DBG (2, "sane_cancel\n"); /* ??? buffer isn't checked in sane_read? */ if (buffer) { if (s->is_mmap) v4l1_munmap(buffer, s->mbuf.size); else free (buffer); buffer = NULL; } }
static int v4l1_cleanup (zbar_video_t *vdo) { #ifdef HAVE_SYS_MMAN_H /* FIXME should avoid holding onto mmap'd buffers so long? */ if(vdo->iomode == VIDEO_MMAP && vdo->buf) { if(v4l1_munmap(vdo->buf, vdo->buflen)) return(err_capture(vdo, SEV_ERROR, ZBAR_ERR_SYSTEM, __func__, "unmapping video frame buffers")); vdo->buf = NULL; /* FIXME reset image */ } #endif /* close open device */ if(vdo->fd >= 0) { v4l1_close(vdo->fd); vdo->fd = -1; } return(0); }
LIBV4L_PUBLIC int munmap(void *start, size_t length) { return v4l1_munmap(start, length); }