> > From: Marc-André Lureau <marcandre.lureau@xxxxxxxxx> > > --- > server/red_dispatcher.c | 6 ++++-- > server/red_dispatcher.h | 2 +- > server/reds.c | 2 +- > 3 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c > index 0bc853d..c43da7d 100644 > --- a/server/red_dispatcher.c > +++ b/server/red_dispatcher.c > @@ -1060,7 +1060,7 @@ static RedChannel > *red_dispatcher_cursor_channel_create(RedDispatcher *dispatche > return cursor_channel; > } > > -void red_dispatcher_init(QXLInstance *qxl) > +RedDispatcher *red_dispatcher_new(QXLInstance *qxl) > { > RedDispatcher *red_dispatcher; > WorkerInitData init_data; > @@ -1069,7 +1069,7 @@ void red_dispatcher_init(QXLInstance *qxl) > RedChannel *cursor_channel; > ClientCbs client_cbs = { NULL, }; > > - spice_return_if_fail(qxl->st->dispatcher == NULL); > + spice_return_val_if_fail(qxl->st->dispatcher == NULL, NULL); > This is just going to leak the old dispatcher if already set, see below. This should be an assert. > static gsize initialized = FALSE; > if (g_once_init_enter(&initialized)) { > @@ -1164,6 +1164,8 @@ void red_dispatcher_init(QXLInstance *qxl) > > qxl->st->qif->attache_worker(qxl, &red_dispatcher->base); > qxl->st->qif->set_compression_level(qxl, calc_compression_level()); > + > + return red_dispatcher; > } > > struct Dispatcher *red_dispatcher_get_dispatcher(RedDispatcher > *red_dispatcher) > diff --git a/server/red_dispatcher.h b/server/red_dispatcher.h > index ae46982..f487317 100644 > --- a/server/red_dispatcher.h > +++ b/server/red_dispatcher.h > @@ -28,7 +28,7 @@ typedef struct RedChannelClient RedChannelClient; > > typedef struct AsyncCommand AsyncCommand; > > -void red_dispatcher_init(QXLInstance *qxl); > +RedDispatcher *red_dispatcher_new(QXLInstance *qxl); > > void red_dispatcher_set_mm_time(uint32_t); > void red_dispatcher_on_ic_change(void); > diff --git a/server/reds.c b/server/reds.c > index 2aea688..d53ea66 100644 > --- a/server/reds.c > +++ b/server/reds.c > @@ -3156,7 +3156,7 @@ SPICE_GNUC_VISIBLE int > spice_server_add_interface(SpiceServer *s, > qxl = SPICE_CONTAINEROF(sin, QXLInstance, base); > qxl->st = spice_new0(QXLState, 1); > qxl->st->qif = SPICE_CONTAINEROF(interface, QXLInterface, base); > - red_dispatcher_init(qxl); > + qxl->st->dispatcher = red_dispatcher_new(qxl); > Here the NULL is set. > } else if (strcmp(interface->type, SPICE_INTERFACE_TABLET) == 0) { > spice_info("SPICE_INTERFACE_TABLET"); The rename make sense. Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel