Acked-by: Jonathon Jongsma <jjongsma@xxxxxxxxxx> On Wed, 2017-08-30 at 16:28 +0100, Frediano Ziglio wrote: > QXL device requires a QXL interface which imply all sorts > of requirements like memory sharing. > Currently RedCursorChannel uses QXL to release resources > allocated from such devices. > However this is quite a limitation as potentially we > can implement cursors in a virtual device. > This for instance is the case of streaming device. > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > --- > server/cursor-channel.c | 8 +++++--- > server/cursor-channel.h | 4 ++-- > server/red-worker.c | 2 +- > 3 files changed, 8 insertions(+), 6 deletions(-) > > diff --git a/server/cursor-channel.c b/server/cursor-channel.c > index 5ece576c..fa75dab2 100644 > --- a/server/cursor-channel.c > +++ b/server/cursor-channel.c > @@ -94,7 +94,9 @@ static void cursor_item_unref(CursorItem *item) > return; > > cursor_cmd = item->red_cursor; > - red_qxl_release_resource(item->qxl, cursor_cmd- > >release_info_ext); > + if (item->qxl) { > + red_qxl_release_resource(item->qxl, cursor_cmd- > >release_info_ext); > + } > red_put_cursor_cmd(cursor_cmd); > free(cursor_cmd); > > @@ -290,7 +292,7 @@ static void > cursor_channel_send_item(RedChannelClient *rcc, RedPipeItem *pipe_it > red_channel_client_begin_send_message(rcc); > } > > -CursorChannel* cursor_channel_new(RedsState *server, QXLInstance > *qxl, > +CursorChannel* cursor_channel_new(RedsState *server, QXLInstance > *qxl, uint32_t id, > const SpiceCoreInterfaceInternal > *core) > { > spice_debug("create cursor channel"); > @@ -298,7 +300,7 @@ CursorChannel* cursor_channel_new(RedsState > *server, QXLInstance *qxl, > "spice-server", server, > "core-interface", core, > "channel-type", SPICE_CHANNEL_CURSOR, > - "id", qxl->id, > + "id", id, > "migration-flags", 0, > "qxl", qxl, > "handle-acks", TRUE, > diff --git a/server/cursor-channel.h b/server/cursor-channel.h > index 9f3ef52e..c173e2ca 100644 > --- a/server/cursor-channel.h > +++ b/server/cursor-channel.h > @@ -56,8 +56,8 @@ GType cursor_channel_get_type(void) G_GNUC_CONST; > * provided as helper functions and should only be called from the > * CursorChannel thread. > */ > -CursorChannel* cursor_channel_new (RedsState *server, > QXLInstance *qxl, > - const > SpiceCoreInterfaceInternal *core); > +CursorChannel* cursor_channel_new(RedsState *server, QXLInstance > *qxl, uint32_t id, > + const SpiceCoreInterfaceInternal > *core); > > /** > * Cause the channel to disconnect all clients > diff --git a/server/red-worker.c b/server/red-worker.c > index 0e2e8fa3..81a318ca 100644 > --- a/server/red-worker.c > +++ b/server/red-worker.c > @@ -1350,7 +1350,7 @@ RedWorker* red_worker_new(QXLInstance *qxl, > > worker->event_timeout = INF_EVENT_WAIT; > > - worker->cursor_channel = cursor_channel_new(reds, qxl, > + worker->cursor_channel = cursor_channel_new(reds, qxl, qxl->id, > &worker->core); > channel = RED_CHANNEL(worker->cursor_channel); > red_channel_init_stat_node(channel, &worker->stat, > "cursor_channel"); _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel