[Spice-devel] [PATCH spice-gtk 1/2] proxy: initialize proxy at session construct time
Marc-André Lureau
marcandre.lureau at gmail.com
Mon Jan 28 12:19:32 PST 2013
---
gtk/spice-session-priv.h | 2 ++
gtk/spice-session.c | 40 +++++++++++++++++++++++-----------------
2 files changed, 25 insertions(+), 17 deletions(-)
diff --git a/gtk/spice-session-priv.h b/gtk/spice-session-priv.h
index 804658d..7ee6b6c 100644
--- a/gtk/spice-session-priv.h
+++ b/gtk/spice-session-priv.h
@@ -22,6 +22,7 @@
#include <gio/gio.h>
#include "desktop-integration.h"
#include "spice-session.h"
+#include "spice-proxy.h"
#include "spice-gtk-session.h"
#include "spice-channel-cache.h"
#include "decode.h"
@@ -44,6 +45,7 @@ struct _SpiceSessionPrivate {
char *cert_subject;
guint verify;
gboolean read_only;
+ SpiceProxy *proxy;
/* whether to enable audio */
gboolean audio;
diff --git a/gtk/spice-session.c b/gtk/spice-session.c
index 0e405bc..5beb6a1 100644
--- a/gtk/spice-session.c
+++ b/gtk/spice-session.c
@@ -118,6 +118,26 @@ enum {
static guint signals[SPICE_SESSION_LAST_SIGNAL];
+static SpiceProxy* get_proxy(void)
+{
+ GError *error = NULL;
+ SpiceProxy *proxy;
+
+ const gchar *proxy_env = g_getenv("SPICE_PROXY");
+ if (proxy_env == NULL || strlen(proxy_env) == 0)
+ return NULL;
+
+ proxy = spice_proxy_new();
+ if (!spice_proxy_parse(proxy, proxy_env, &error))
+ g_clear_object(&proxy);
+ if (error) {
+ g_warning ("%s", error->message);
+ g_clear_error (&error);
+ }
+
+ return proxy;
+}
+
static void spice_session_init(SpiceSession *session)
{
SpiceSessionPrivate *s;
@@ -147,6 +167,7 @@ static void spice_session_init(SpiceSession *session)
cache_init(&s->images, "image");
cache_init(&s->palettes, "palette");
s->glz_window = glz_decoder_window_new();
+ s->proxy = get_proxy();
}
static void
@@ -179,6 +200,7 @@ spice_session_dispose(GObject *gobject)
g_clear_object(&s->desktop_integration);
g_clear_object(&s->gtk_session);
g_clear_object(&s->usb_manager);
+ g_clear_object(&s->proxy);
/* Chain up to the parent class */
if (G_OBJECT_CLASS(spice_session_parent_class)->dispose)
@@ -1647,21 +1669,6 @@ static void proxy_lookup_ready(GObject *source_object, GAsyncResult *result,
open_host_connectable_connect(open_host, G_SOCKET_CONNECTABLE(address));
g_resolver_free_addresses(addresses);
}
-
-static SpiceProxy* get_proxy(GError **error)
-{
- SpiceProxy *proxy;
-
- const gchar *proxy_env = g_getenv("SPICE_PROXY");
- if (proxy_env == NULL || strlen(proxy_env) == 0)
- return NULL;
-
- proxy = spice_proxy_new();
- if (!spice_proxy_parse(proxy, proxy_env, error))
- g_clear_object(&proxy);
-
- return proxy;
-}
#endif
/* main context */
@@ -1674,7 +1681,7 @@ static gboolean open_host_idle_cb(gpointer data)
g_return_val_if_fail(open_host->socket == NULL, FALSE);
#if GLIB_CHECK_VERSION(2,26,0)
- open_host->proxy = get_proxy(&open_host->error);
+ open_host->proxy = s->proxy;
if (open_host->error != NULL) {
coroutine_yieldto(open_host->from, NULL);
return FALSE;
@@ -1729,7 +1736,6 @@ GSocket* spice_session_channel_open_host(SpiceSession *session, SpiceChannel *ch
}
g_clear_object(&open_host.client);
- g_clear_object(&open_host.proxy);
return open_host.socket;
}
--
1.8.1.1.439.g50a6b54
More information about the Spice-devel
mailing list