[Spice-devel] [PATCH spice-server] Release cursor as soon as possible
Frediano Ziglio
fziglio at redhat.com
Wed Sep 6 16:41:30 UTC 2017
>
> On Wed, Sep 06, 2017 at 01:41:21PM +0100, Frediano Ziglio wrote:
> > diff --git a/server/red-parse-qxl.c b/server/red-parse-qxl.c
> > index 33f36923a..fda4ff26d 100644
> > --- a/server/red-parse-qxl.c
> > +++ b/server/red-parse-qxl.c
> > @@ -26,6 +26,7 @@
> > #include "red-common.h"
> > #include "memslot.h"
> > #include "red-parse-qxl.h"
> > +#include "red-qxl.h"
> >
> > /* Max size in bytes for any data field used in a QXL command.
> > * This will for example be useful to prevent the guest from saturating
> > the
> > @@ -1461,8 +1462,10 @@ static void red_put_cursor(SpiceCursor *red)
> > }
> >
> > bool red_get_cursor_cmd(RedMemSlotInfo *slots, int group_id,
> > - RedCursorCmd *red, QXLPHYSICAL addr)
> > + RedCursorCmd *red, QXLPHYSICAL addr,
> > + QXLInstance *qxl_instance)
> > {
> > + QXLReleaseInfoExt release_info_ext;
> > QXLCursorCmd *qxl;
> > int error;
> >
> > @@ -1470,8 +1473,8 @@ bool red_get_cursor_cmd(RedMemSlotInfo *slots, int
> > group_id,
> > if (error) {
> > return false;
> > }
> > - red->release_info_ext.info = &qxl->release_info;
> > - red->release_info_ext.group_id = group_id;
> > + release_info_ext.info = &qxl->release_info;
> > + release_info_ext.group_id = group_id;
> >
> > red->type = qxl->type;
> > switch (red->type) {
> > @@ -1487,6 +1490,7 @@ bool red_get_cursor_cmd(RedMemSlotInfo *slots, int
> > group_id,
> > red->u.trail.frequency = qxl->u.trail.frequency;
> > break;
> > }
> > + red_qxl_release_resource(qxl_instance, release_info_ext);
> > return true;
> > }
>
> I would still move this up to the caller:
>
> diff --git a/server/red-worker.c b/server/red-worker.c
> index 3d27afc47..a06029e3b 100644
> --- a/server/red-worker.c
> +++ b/server/red-worker.c
> @@ -108,6 +108,7 @@ static gboolean red_process_cursor_cmd(RedWorker *worker,
> const QXLCommandExt *e
> free(cursor_cmd);
> return FALSE;
> }
> + red_qxl_release_resource(worker->qxl, cursor_cmd->release_info_ext);
> cursor_channel_process_cmd(worker->cursor_channel, cursor_cmd);
> return TRUE;
> }
>
> And I'd still move the "remove CursorChannel::qxl" bits to a separate commit.
>
> Christophe
>
I would say dirty but is already dirty so would make sense.
I'll split it.
Frediano
More information about the Spice-devel
mailing list