[Spice-devel] [PATCH 7/7] worker: move red_record_command
Jonathon Jongsma
jjongsma at redhat.com
Fri Aug 14 12:41:22 PDT 2015
Again, I think it may be worthwhile to simply combine this commit with
an earlier one.
On Thu, 2015-08-13 at 16:25 +0100, Frediano Ziglio wrote:
> From: Marc-André Lureau <marcandre.lureau at gmail.com>
>
> ---
> server/red_record_qxl.c | 35 ++++++++++++++++++++++++++++-------
> server/red_record_qxl.h | 18 +++---------------
> server/red_worker.c | 32 +++++---------------------------
> 3 files changed, 36 insertions(+), 49 deletions(-)
>
> diff --git a/server/red_record_qxl.c b/server/red_record_qxl.c
> index a72a200..5c27311 100644
> --- a/server/red_record_qxl.c
> +++ b/server/red_record_qxl.c
> @@ -659,8 +659,8 @@ static void red_record_compat_drawable(FILE *fd, RedMemSlotInfo *slots, int grou
> };
> }
>
> -void red_record_drawable(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr, uint32_t flags)
> +static void red_record_drawable(FILE *fd, RedMemSlotInfo *slots, int group_id,
> + QXLPHYSICAL addr, uint32_t flags)
> {
> fprintf(fd, "drawable\n");
> if (flags & QXL_COMMAND_FLAG_COMPAT) {
> @@ -670,8 +670,8 @@ void red_record_drawable(FILE *fd, RedMemSlotInfo *slots, int group_id,
> }
> }
>
> -void red_record_update_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr)
> +static void red_record_update_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> + QXLPHYSICAL addr)
> {
> QXLUpdateCmd *qxl;
> int error;
> @@ -685,8 +685,8 @@ void red_record_update_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> fprintf(fd, "surface_id %d\n", qxl->surface_id);
> }
>
> -void red_record_message(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr)
> +static void red_record_message(FILE *fd, RedMemSlotInfo *slots, int group_id,
> + QXLPHYSICAL addr)
> {
> QXLMessage *qxl;
> int error;
> @@ -702,7 +702,7 @@ void red_record_message(FILE *fd, RedMemSlotInfo *slots, int group_id,
> write_binary(fd, "message", strlen((char*)qxl->data), (uint8_t*)qxl->data);
> }
>
> -void red_record_surface_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> +static void red_record_surface_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> QXLPHYSICAL addr)
> {
> QXLSurfaceCmd *qxl;
> @@ -804,3 +804,24 @@ void red_record_event(FILE *fd, int what, uint32_t type, unsigned long ts)
> // (that can be up to VGA_FRAMEBUFFER large)
> fprintf(fd, "event %d %d %u %lu\n", counter++, what, type, ts);
> }
> +
> +void red_record_qxl_command(FILE *fd, RedMemSlotInfo *slots,
> + QXLCommandExt ext_cmd, unsigned long ts)
> +{
> + red_record_event(fd, 0, ext_cmd.cmd.type, ts);
> +
> + switch (ext_cmd.cmd.type) {
> + case QXL_CMD_DRAW:
> + red_record_drawable(fd, slots, ext_cmd.group_id, ext_cmd.cmd.data, ext_cmd.flags);
> + break;
> + case QXL_CMD_UPDATE:
> + red_record_update_cmd(fd, slots, ext_cmd.group_id, ext_cmd.cmd.data);
> + break;
> + case QXL_CMD_MESSAGE:
> + red_record_message(fd, slots, ext_cmd.group_id, ext_cmd.cmd.data);
> + break;
> + case QXL_CMD_SURFACE:
> + red_record_surface_cmd(fd, slots, ext_cmd.group_id, ext_cmd.cmd.data);
> + break;
> + }
> +}
> diff --git a/server/red_record_qxl.h b/server/red_record_qxl.h
> index f7dcdc0..b737db8 100644
> --- a/server/red_record_qxl.h
> +++ b/server/red_record_qxl.h
> @@ -23,24 +23,12 @@
> #include "red_common.h"
> #include "red_memslots.h"
>
> -void red_record_drawable(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr, uint32_t flags);
> -
> -void red_record_update_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr);
> -
> -void red_record_message(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr);
> -
> -void red_record_surface_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr);
> -
> -void red_record_cursor_cmd(FILE *fd, RedMemSlotInfo *slots, int group_id,
> - QXLPHYSICAL addr);
> -
> void red_record_dev_input_primary_surface_create(
> FILE *fd, QXLDevSurfaceCreate *surface, uint8_t *line_0);
>
> void red_record_event(FILE *fd, int what, uint32_t type, unsigned long ts);
>
> +void red_record_qxl_command(FILE *fd, RedMemSlotInfo *slots,
> + QXLCommandExt ext_cmd, unsigned long ts);
> +
> #endif
> diff --git a/server/red_worker.c b/server/red_worker.c
> index 98a39dd..b47472a 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -5019,30 +5019,6 @@ static RedDrawable *red_drawable_new(void)
> return red;
> }
>
> -static void red_record_command(RedWorker *worker, QXLCommandExt ext_cmd)
> -{
> - red_record_event(worker->record_fd, 0, ext_cmd.cmd.type, stat_now());
> -
> - switch (ext_cmd.cmd.type) {
> - case QXL_CMD_DRAW:
> - red_record_drawable(worker->record_fd, &worker->mem_slots, ext_cmd.group_id,
> - ext_cmd.cmd.data, ext_cmd.flags);
> - break;
> - case QXL_CMD_UPDATE:
> - red_record_update_cmd(worker->record_fd, &worker->mem_slots, ext_cmd.group_id,
> - ext_cmd.cmd.data);
> - break;
> - case QXL_CMD_MESSAGE:
> - red_record_message(worker->record_fd, &worker->mem_slots, ext_cmd.group_id,
> - ext_cmd.cmd.data);
> - break;
> - case QXL_CMD_SURFACE:
> - red_record_surface_cmd(worker->record_fd, &worker->mem_slots, ext_cmd.group_id,
> - ext_cmd.cmd.data);
> - break;
> - }
> -}
> -
> static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *ring_is_empty)
> {
> QXLCommandExt ext_cmd;
> @@ -5073,9 +5049,11 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *
> }
> continue;
> }
> - if (worker->record_fd) {
> - red_record_command(worker, ext_cmd);
> - }
> +
> + if (worker->record_fd)
> + red_record_qxl_command(worker->record_fd, &worker->mem_slots, ext_cmd,
> + stat_now());
> +
> stat_inc_counter(worker->command_counter, 1);
> worker->repoll_cmd_ring = 0;
> switch (ext_cmd.cmd.type) {
More information about the Spice-devel
mailing list