On Tue, 2014-11-25 at 14:19 +0100, Marc-André Lureau wrote: > Use session accessors to initialize the webdav server > --- > gtk/channel-webdav.c | 24 +++++------------------- > gtk/spice-session-priv.h | 2 ++ > gtk/spice-session.c | 23 +++++++++++++++++++++++ > 3 files changed, 30 insertions(+), 19 deletions(-) > > diff --git a/gtk/channel-webdav.c b/gtk/channel-webdav.c > index dbb8730..94f3ef3 100644 > --- a/gtk/channel-webdav.c > +++ b/gtk/channel-webdav.c > @@ -694,19 +694,14 @@ end: > g_object_unref(gaddr); > } > > -static PhodavServer* webdav_server_new(SpiceSession *session) > +G_GNUC_INTERNAL > +PhodavServer* channel_webdav_server_new(SpiceSession *session) I find this name a little inconsistent. Generally the first part of the function name indicates the type of object that this method belongs to. So I'd expect channel_webdav_server_new() to take a SpiceWebdavChannel* as its first argument, but it takes a SpiceSession* instead. So it seems that spice_session_webdav_server_new() would be a more appropriate name? Maybe even move it along to spice-session.c since its only caller just got moved there? Looks fine otherwise. > { > PhodavServer *dav; > SoupServer *server; > SoupSocket *listener; > - int i; > - > - g_warn_if_fail(!session->priv->webdav); > > dav = phodav_server_new(0, spice_session_get_shared_dir(session)); > - session->priv->webdav = dav; > - for (i = 0; i < sizeof(session->priv->webdav_magic); i++) > - session->priv->webdav_magic[i] = g_random_int_range(0, 255); > > server = phodav_server_get_soup_server(dav); > listener = soup_server_get_listener(server); > @@ -723,21 +718,12 @@ static PhodavServer* phodav_server_get(SpiceSession *session, gint *port) > g_return_val_if_fail(SPICE_IS_SESSION(session), NULL); > > #ifdef USE_PHODAV > - PhodavServer *self = NULL; > - static GStaticMutex mutex = G_STATIC_MUTEX_INIT; > - > - g_static_mutex_lock(&mutex); > - self = session->priv->webdav; > - if (self == NULL) { > - self = webdav_server_new(session); > - phodav_server_run(self); > - } > - g_static_mutex_unlock(&mutex); > + PhodavServer *server = spice_session_get_webdav_server(session); > > if (port) > - *port = phodav_server_get_port(self); > + *port = phodav_server_get_port(server); > > - return self; > + return server; > #else > g_return_val_if_reached(NULL); > #endif > diff --git a/gtk/spice-session-priv.h b/gtk/spice-session-priv.h > index 5a63536..5136c2d 100644 > --- a/gtk/spice-session-priv.h > +++ b/gtk/spice-session-priv.h > @@ -178,6 +178,8 @@ gboolean spice_session_get_usbredir_enabled(SpiceSession *session); > > #define WEBDAV_MAGIC_SIZE 16 > const guint8* spice_session_get_webdav_magic(SpiceSession *session); > +PhodavServer *spice_session_get_webdav_server(SpiceSession *session); > +PhodavServer* channel_webdav_server_new(SpiceSession *session); > guint spice_session_get_display_channels_count(SpiceSession *session); > void spice_session_set_migration_copy(SpiceSession *session, gboolean copy); > void spice_session_set_main_channel(SpiceSession *session, SpiceChannel *channel); > diff --git a/gtk/spice-session.c b/gtk/spice-session.c > index 5dd6f0f..04979a1 100644 > --- a/gtk/spice-session.c > +++ b/gtk/spice-session.c > @@ -2379,6 +2379,29 @@ const guint8* spice_session_get_webdav_magic(SpiceSession *session) > } > > G_GNUC_INTERNAL > +PhodavServer* spice_session_get_webdav_server(SpiceSession *session) > +{ > + g_return_val_if_fail(SPICE_IS_SESSION(session), NULL); > + > +#ifdef USE_PHODAV > + static GStaticMutex mutex = G_STATIC_MUTEX_INIT; > + int i; > + > + g_static_mutex_lock(&mutex); > + if (!session->priv->webdav) { > + for (i = 0; i < sizeof(session->priv->webdav_magic); i++) > + session->priv->webdav_magic[i] = g_random_int_range(0, 255); > + > + session->priv->webdav = channel_webdav_server_new(session); > + phodav_server_run(session->priv->webdav); > + } > + g_static_mutex_unlock(&mutex); > +#endif > + > + return session->priv->webdav; > +} > + > +G_GNUC_INTERNAL > void spice_session_set_migration_copy(SpiceSession *session, gboolean copy) > { > g_return_if_fail(SPICE_IS_SESSION(session)); _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/spice-devel