On 03/16/11 16:52, Alon Levy wrote: > +void qxl_server_request_cursor_set(PCIQXLDevice *qxl, QEMUCursor *c, int x, > int y) > +{ > + QXLServerCursorSetRequest req; > + int r; > + > + req.req = QXL_SERVER_CURSOR_SET; > + req.data.c = c; > + req.data.x = x; > + req.data.y = y; > + r = write(qxl->ssd.pipe[1], &req, sizeof(req)); > + assert(r == sizeof(req)); > +}
There's a number of asserts here, which I am not sure is a good thing. I don't understand how far down the code this is, and if it is really fatal if this write fails? > +/* called from spice server thread context only */ > +void qxl_server_request_cursor_move(PCIQXLDevice *qxl, int x, int y) > +{ > + QXLServerCursorMoveRequest req; > + int r; > + > + req.req = QXL_SERVER_CURSOR_MOVE; > + req.data.x = x; > + req.data.y = y; > + r = write(qxl->ssd.pipe[1], &req, sizeof(req)); > + assert(r == sizeof(req)); ditto > +static void read_bytes(int fd, void *buf, int len_requested) > +{ > + int len; > + int total_len = 0; > + > + do { > + len = read(fd, buf, len_requested - total_len); > + if (len < 0) { > + if (errno == EINTR || errno == EAGAIN) { > + continue; > + } > + perror("qxl: pipe_read: read failed"); > + /* will abort once it's out of the while loop */ > + break; > + } > + total_len += len; > + buf = (uint8_t *)buf + len; > + } while (total_len < len_requested); > + assert(total_len == len_requested); and here? Cheers, Jes