mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice
synced 2026-08-10 03:47:35 +00:00
worker: simplify process loops
It was not clear when req_cmd_notification was called.
This code reproduce just the old behavior but is easier to read.
Steps are:
// original
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->display_poll_tries++;
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
return n;
}
if (worker->display_poll_tries > CMD_RING_POLL_RETRIES ||
worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
worker->display_poll_tries++;
return n;
}
continue;
// split if
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->display_poll_tries++;
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
return n;
}
if (worker->display_poll_tries > CMD_RING_POLL_RETRIES) {
worker->display_poll_tries++;
return n;
}
if (worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
worker->display_poll_tries++;
return n;
}
continue;
// order inside if
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
worker->display_poll_tries++;
return n;
}
if (worker->display_poll_tries > CMD_RING_POLL_RETRIES) {
worker->display_poll_tries++;
return n;
}
if (worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
worker->display_poll_tries++;
return n;
}
continue;
// consider cases
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
worker->display_poll_tries++;
return n;
}
if (worker->display_poll_tries > CMD_RING_POLL_RETRIES) {
worker->display_poll_tries++;
return n;
}
if (worker->display_poll_tries == CMD_RING_POLL_RETRIES) {
if (worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
worker->display_poll_tries++;
return n;
}
continue;
}
// unreachable
// invert if
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
worker->display_poll_tries++;
return n;
}
if (worker->display_poll_tries > CMD_RING_POLL_RETRIES) {
worker->display_poll_tries++;
return n;
}
if (worker->display_poll_tries == CMD_RING_POLL_RETRIES) {
if (!worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
continue;
}
worker->display_poll_tries++;
return n;
}
// unreachable
// reuse code
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
} else if (worker->display_poll_tries > CMD_RING_POLL_RETRIES) {
} else if (worker->display_poll_tries == CMD_RING_POLL_RETRIES) {
if (!worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
continue;
}
}
worker->display_poll_tries++;
return n;
// remove empty if
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
} else if (worker->display_poll_tries == CMD_RING_POLL_RETRIES) {
if (!worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
continue;
}
}
worker->display_poll_tries++;
return n;
// collapse two conditions
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
} else if (worker->display_poll_tries == CMD_RING_POLL_RETRIES &&
!worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
continue;
}
worker->display_poll_tries++;
return n;
Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Jonathon Jongsma <jjongsma at redhat.com>
This commit is contained in:
parent
fa2668319e
commit
b98aa6860d
@ -167,16 +167,13 @@ static int red_process_cursor(RedWorker *worker, int *ring_is_empty)
|
||||
if (!worker->qxl->st->qif->get_cursor_command(worker->qxl, &ext_cmd)) {
|
||||
*ring_is_empty = TRUE;
|
||||
if (worker->cursor_poll_tries < CMD_RING_POLL_RETRIES) {
|
||||
worker->cursor_poll_tries++;
|
||||
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
|
||||
return n;
|
||||
} else if (worker->cursor_poll_tries == CMD_RING_POLL_RETRIES &&
|
||||
!worker->qxl->st->qif->req_cursor_notification(worker->qxl)) {
|
||||
continue;
|
||||
}
|
||||
if (worker->cursor_poll_tries > CMD_RING_POLL_RETRIES ||
|
||||
worker->qxl->st->qif->req_cursor_notification(worker->qxl)) {
|
||||
worker->cursor_poll_tries++;
|
||||
return n;
|
||||
}
|
||||
continue;
|
||||
worker->cursor_poll_tries++;
|
||||
return n;
|
||||
}
|
||||
worker->cursor_poll_tries = 0;
|
||||
switch (ext_cmd.cmd.type) {
|
||||
@ -228,16 +225,13 @@ static int red_process_display(RedWorker *worker, int *ring_is_empty)
|
||||
if (!worker->qxl->st->qif->get_command(worker->qxl, &ext_cmd)) {
|
||||
*ring_is_empty = TRUE;
|
||||
if (worker->display_poll_tries < CMD_RING_POLL_RETRIES) {
|
||||
worker->display_poll_tries++;
|
||||
worker->event_timeout = MIN(worker->event_timeout, CMD_RING_POLL_TIMEOUT);
|
||||
return n;
|
||||
} else if (worker->display_poll_tries == CMD_RING_POLL_RETRIES &&
|
||||
!worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
|
||||
continue;
|
||||
}
|
||||
if (worker->display_poll_tries > CMD_RING_POLL_RETRIES ||
|
||||
worker->qxl->st->qif->req_cmd_notification(worker->qxl)) {
|
||||
worker->display_poll_tries++;
|
||||
return n;
|
||||
}
|
||||
continue;
|
||||
worker->display_poll_tries++;
|
||||
return n;
|
||||
}
|
||||
|
||||
if (worker->record_fd)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user