[Spice-devel] [PATCH] Limit maximum "n-surfaces" via param spec

Frediano Ziglio fziglio at redhat.com
Mon Oct 31 09:47:59 UTC 2016


> 
> On Fri, 2016-10-28 at 06:46 -0400, Frediano Ziglio wrote:
> > > 
> > > 
> > > In commit beec1b41, we manually limited this property value in
> > > _set_property(). But there's a simpler way to do it: via the param
> > > spec
> > > for the property.
> > > 
> > > This also means that we can remove the warning log in
> > > red_worker_new()
> > > since GObject will automatically warn if a property is assigned a
> > > value
> > > outside of its valid range.
> > > ---
> > > 
> > > I know the earlier commit was already pushed, but I just realized a
> > > simpler
> > > way
> > > to fix this issue. What do you think?
> > > 
> > >  server/display-channel.c | 3 +--
> > >  server/red-worker.c      | 2 --
> > >  2 files changed, 1 insertion(+), 4 deletions(-)
> > > 
> > > diff --git a/server/display-channel.c b/server/display-channel.c
> > > index bcf26bb..b838ba6 100644
> > > --- a/server/display-channel.c
> > > +++ b/server/display-channel.c
> > > @@ -60,7 +60,6 @@ display_channel_set_property(GObject *object,
> > >      {
> > >          case PROP_N_SURFACES:
> > >              self->priv->n_surfaces = g_value_get_uint(value);
> > > -            self->priv->n_surfaces = MIN(self->priv->n_surfaces,
> > > NUM_SURFACES);
> > >              break;
> > >          case PROP_VIDEO_CODECS:
> > >              if (self->priv->video_codecs) {
> > > @@ -2232,7 +2231,7 @@
> > > display_channel_class_init(DisplayChannelClass *klass)
> > >                                      g_param_spec_uint("n-
> > > surfaces",
> > >                                                        "number of
> > > surfaces",
> > >                                                        "Number of
> > > surfaces
> > >                                                        for this
> > > channel",
> > > -                                                      0,
> > > G_MAXUINT,
> > > +                                                      0,
> > > NUM_SURFACES,
> > >                                                        0,
> > >                                                        G_PARAM_CONS
> > > TRUCT_ONLY
> > >                                                        |
> > >                                                        G_PARAM_READ
> > > WRITE |
> > > diff --git a/server/red-worker.c b/server/red-worker.c
> > > index f7f0726..2ed2453 100644
> > > --- a/server/red-worker.c
> > > +++ b/server/red-worker.c
> > > @@ -1358,8 +1358,6 @@ RedWorker* red_worker_new(QXLInstance *qxl,
> > >                        init_info.memslot_id_bits,
> > >                        init_info.internal_groupslot_id);
> > >  
> > > -    spice_warn_if_fail(init_info.n_surfaces <= NUM_SURFACES);
> > > -
> > >      worker->event_timeout = INF_EVENT_WAIT;
> > >  
> > >      worker->cursor_channel = cursor_channel_new(reds, qxl,
> > 
> > Sounds good. What happens to the property? Does the value
> > get capped or just discarded?
> 
> The invalid value is discarded and a critical warning is issued.
> 
> > Not that Qemu should try to set crazy values but if you set 20000
> > and got 0 perhaps would be better to get the maximum (10000).
> > Surely better than giving a warning and then having possible
> > overflows (as the current code does!).
> 
> Well, at the moment, we set the default value for that parameter to 0.
> But we could also change the default to make it something more
> reasonable (perhaps the maximum?). Would that be sufficient, or would
> you still prefer to keep your existing "capped" approach?
> 
> Jonathon
> 

Would be fine.
About ranges I think the minimum should be 1 so to allow to
have a primary surface (always 0!).

Frediano


More information about the Spice-devel mailing list