This allows to get rid of the DisplayChannel parameter to red_drawable_unref() --- server/red-parse-qxl.h | 1 + server/red-worker.c | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/server/red-parse-qxl.h b/server/red-parse-qxl.h index 8f8d459..179d45c 100644 --- a/server/red-parse-qxl.h +++ b/server/red-parse-qxl.h @@ -25,6 +25,7 @@ typedef struct RedDrawable { int refs; + QXLInstance *qxl; QXLReleaseInfo *release_info; uint32_t surface_id; uint8_t effect; diff --git a/server/red-worker.c b/server/red-worker.c index a606aac..7ce09bf 100644 --- a/server/red-worker.c +++ b/server/red-worker.c @@ -139,7 +139,7 @@ void red_drawable_unref(DisplayChannel *display, RedDrawable *red_drawable, } release_info_ext.group_id = group_id; release_info_ext.info = red_drawable->release_info; - display->common.qxl->st->qif->release_resource(display->common.qxl, release_info_ext); + red_drawable->qxl->st->qif->release_resource(red_drawable->qxl, release_info_ext); red_put_drawable(red_drawable); free(red_drawable); } @@ -190,11 +190,12 @@ static int red_process_cursor(RedWorker *worker, int *ring_is_empty) return n; } -static RedDrawable *red_drawable_new(RedWorker *worker) +static RedDrawable *red_drawable_new(QXLInstance *qxl) { RedDrawable * red = spice_new0(RedDrawable, 1); red->refs = 1; + red->qxl = qxl; return red; } @@ -233,7 +234,7 @@ static int red_process_display(RedWorker *worker, int *ring_is_empty) worker->display_poll_tries = 0; switch (ext_cmd.cmd.type) { case QXL_CMD_DRAW: { - RedDrawable *red_drawable = red_drawable_new(worker); // returns with 1 ref + RedDrawable *red_drawable = red_drawable_new(worker->qxl); // returns with 1 ref if (!red_get_drawable(&worker->mem_slots, ext_cmd.group_id, red_drawable, ext_cmd.cmd.data, ext_cmd.flags)) { -- 2.5.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel