diff options
-rw-r--r-- | gtk/channel-cursor.c | 6 | ||||
-rw-r--r-- | gtk/channel-display.c | 6 | ||||
-rw-r--r-- | gtk/channel-inputs.c | 6 | ||||
-rw-r--r-- | gtk/channel-main.c | 5 | ||||
-rw-r--r-- | gtk/channel-playback.c | 6 | ||||
-rw-r--r-- | gtk/spice-channel-priv.h | 1 | ||||
-rw-r--r-- | gtk/spice-channel.c | 74 | ||||
-rw-r--r-- | gtk/spice-session.c | 20 | ||||
-rw-r--r-- | gtk/spice-widget.c | 6 |
9 files changed, 61 insertions, 69 deletions
diff --git a/gtk/channel-cursor.c b/gtk/channel-cursor.c index 4009faa..11d20ff 100644 --- a/gtk/channel-cursor.c +++ b/gtk/channel-cursor.c @@ -37,8 +37,6 @@ static void spice_cursor_channel_init(SpiceCursorChannel *channel) { spice_cursor_channel *c; - fprintf(stderr, "%s\n", __FUNCTION__); - c = channel->priv = SPICE_CURSOR_CHANNEL_GET_PRIVATE(channel); memset(c, 0, sizeof(*c)); @@ -47,8 +45,6 @@ static void spice_cursor_channel_init(SpiceCursorChannel *channel) static void spice_cursor_channel_finalize(GObject *obj) { - fprintf(stderr, "%s\n", __FUNCTION__); - if (G_OBJECT_CLASS(spice_cursor_channel_parent_class)->finalize) G_OBJECT_CLASS(spice_cursor_channel_parent_class)->finalize(obj); } @@ -58,8 +54,6 @@ static void spice_cursor_channel_class_init(SpiceCursorChannelClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS(klass); SpiceChannelClass *channel_class = SPICE_CHANNEL_CLASS(klass); - fprintf(stderr, "%s\n", __FUNCTION__); - gobject_class->finalize = spice_cursor_channel_finalize; channel_class->handle_msg = spice_cursor_handle_msg; diff --git a/gtk/channel-display.c b/gtk/channel-display.c index 8fcaa11..9718779 100644 --- a/gtk/channel-display.c +++ b/gtk/channel-display.c @@ -50,8 +50,6 @@ static void spice_display_channel_finalize(GObject *obj) { spice_display_channel *c = SPICE_DISPLAY_CHANNEL(obj)->priv; - fprintf(stderr, "%s\n", __FUNCTION__); - palette_clear(&c->palette_cache); image_clear(&c->image_cache); clear_surfaces(SPICE_CHANNEL(obj)); @@ -67,8 +65,6 @@ static void spice_display_channel_class_init(SpiceDisplayChannelClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS(klass); SpiceChannelClass *channel_class = SPICE_CHANNEL_CLASS(klass); - fprintf(stderr, "%s\n", __FUNCTION__); - gobject_class->finalize = spice_display_channel_finalize; channel_class->handle_msg = spice_display_handle_msg; channel_class->channel_up = spice_display_channel_up; @@ -248,8 +244,6 @@ static void spice_display_channel_init(SpiceDisplayChannel *channel) { spice_display_channel *c; - fprintf(stderr, "%s\n", __FUNCTION__); - c = channel->priv = SPICE_DISPLAY_CHANNEL_GET_PRIVATE(channel); memset(c, 0, sizeof(*c)); diff --git a/gtk/channel-inputs.c b/gtk/channel-inputs.c index 871373f..1148003 100644 --- a/gtk/channel-inputs.c +++ b/gtk/channel-inputs.c @@ -37,8 +37,6 @@ static void spice_inputs_channel_init(SpiceInputsChannel *channel) { spice_inputs_channel *c; - fprintf(stderr, "%s\n", __FUNCTION__); - c = channel->priv = SPICE_INPUTS_CHANNEL_GET_PRIVATE(channel); memset(c, 0, sizeof(*c)); } @@ -62,8 +60,6 @@ static void spice_inputs_get_property(GObject *object, static void spice_inputs_channel_finalize(GObject *obj) { - fprintf(stderr, "%s\n", __FUNCTION__); - if (G_OBJECT_CLASS(spice_inputs_channel_parent_class)->finalize) G_OBJECT_CLASS(spice_inputs_channel_parent_class)->finalize(obj); } @@ -73,8 +69,6 @@ static void spice_inputs_channel_class_init(SpiceInputsChannelClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS(klass); SpiceChannelClass *channel_class = SPICE_CHANNEL_CLASS(klass); - fprintf(stderr, "%s\n", __FUNCTION__); - gobject_class->finalize = spice_inputs_channel_finalize; gobject_class->get_property = spice_inputs_get_property; channel_class->handle_msg = spice_inputs_handle_msg; diff --git a/gtk/channel-main.c b/gtk/channel-main.c index 0006ab9..7d934ed 100644 --- a/gtk/channel-main.c +++ b/gtk/channel-main.c @@ -82,8 +82,6 @@ static void spice_main_channel_init(SpiceMainChannel *channel) { spice_main_channel *c; - fprintf(stderr, "%s\n", __FUNCTION__); - c = channel->priv = SPICE_MAIN_CHANNEL_GET_PRIVATE(channel); memset(c, 0, sizeof(*c)); } @@ -115,7 +113,6 @@ static void spice_main_channel_finalize(GObject *obj) { spice_main_channel *c = SPICE_MAIN_CHANNEL(obj)->priv; - fprintf(stderr, "%s\n", __FUNCTION__); if (c->timer_id) { g_source_remove(c->timer_id); } @@ -129,8 +126,6 @@ static void spice_main_channel_class_init(SpiceMainChannelClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS(klass); SpiceChannelClass *channel_class = SPICE_CHANNEL_CLASS(klass); - fprintf(stderr, "%s\n", __FUNCTION__); - gobject_class->finalize = spice_main_channel_finalize; gobject_class->get_property = spice_main_get_property; channel_class->handle_msg = spice_main_handle_msg; diff --git a/gtk/channel-playback.c b/gtk/channel-playback.c index 20b86d7..29fe800 100644 --- a/gtk/channel-playback.c +++ b/gtk/channel-playback.c @@ -30,16 +30,12 @@ static void spice_playback_channel_init(SpicePlaybackChannel *channel) { spice_playback_channel *c; - fprintf(stderr, "%s\n", __FUNCTION__); - c = channel->priv = SPICE_PLAYBACK_CHANNEL_GET_PRIVATE(channel); memset(c, 0, sizeof(*c)); } static void spice_playback_channel_finalize(GObject *obj) { - fprintf(stderr, "%s\n", __FUNCTION__); - if (G_OBJECT_CLASS(spice_playback_channel_parent_class)->finalize) G_OBJECT_CLASS(spice_playback_channel_parent_class)->finalize(obj); } @@ -49,8 +45,6 @@ static void spice_playback_channel_class_init(SpicePlaybackChannelClass *klass) GObjectClass *gobject_class = G_OBJECT_CLASS(klass); SpiceChannelClass *channel_class = SPICE_CHANNEL_CLASS(klass); - fprintf(stderr, "%s\n", __FUNCTION__); - gobject_class->finalize = spice_playback_channel_finalize; channel_class->handle_msg = spice_playback_handle_msg; diff --git a/gtk/spice-channel-priv.h b/gtk/spice-channel-priv.h index 734ac2a..4ad1897 100644 --- a/gtk/spice-channel-priv.h +++ b/gtk/spice-channel-priv.h @@ -35,7 +35,6 @@ struct spice_channel { SSL_CTX *ctx; SSL *ssl; - int protocol; int tls; int connection_id; diff --git a/gtk/spice-channel.c b/gtk/spice-channel.c index 0343b3f..4f9f831 100644 --- a/gtk/spice-channel.c +++ b/gtk/spice-channel.c @@ -41,17 +41,24 @@ enum { static guint signals[SPICE_CHANNEL_LAST_SIGNAL]; +static const char *channel_desc[] = { + [ SPICE_CHANNEL_MAIN ] = "main", + [ SPICE_CHANNEL_DISPLAY ] = "display", + [ SPICE_CHANNEL_CURSOR ] = "cursor", + [ SPICE_CHANNEL_INPUTS ] = "inputs", + [ SPICE_CHANNEL_RECORD ] = "record", + [ SPICE_CHANNEL_PLAYBACK ] = "playback", + [ SPICE_CHANNEL_TUNNEL ] = "tunnel", +}; + static void spice_channel_init(SpiceChannel *channel) { spice_channel *c; - fprintf(stderr, "%s\n", __FUNCTION__); - c = channel->priv = SPICE_CHANNEL_GET_PRIVATE(channel); c->serial = 1; c->socket = -1; - c->protocol = SPICE_VERSION_MAJOR; strcpy(c->name, "?"); } @@ -59,10 +66,14 @@ static void spice_channel_constructed(GObject *gobject) { SpiceChannel *channel = SPICE_CHANNEL(gobject); spice_channel *c = SPICE_CHANNEL_GET_PRIVATE(channel); + const char *desc = NULL; - snprintf(c->name, sizeof(c->name), "%d:%d", - c->channel_type, c->channel_id); - fprintf(stderr, "%s %s\n", __FUNCTION__, c->name); + if (c->channel_type < SPICE_N_ELEMENTS(channel_desc)) + desc = channel_desc[c->channel_type]; + + snprintf(c->name, sizeof(c->name), "%s-%d:%d", + desc ? desc : "unknown", c->channel_type, c->channel_id); + fprintf(stderr, "%s: %s\n", c->name, __FUNCTION__); c->connection_id = spice_session_get_connection_id(c->session); spice_session_channel_new(c->session, channel); @@ -77,7 +88,6 @@ static void spice_channel_dispose(GObject *gobject) SpiceChannel *channel = SPICE_CHANNEL(gobject); spice_channel *c = SPICE_CHANNEL_GET_PRIVATE(channel); - fprintf(stderr, "%s %s\n", __FUNCTION__, c->name); spice_channel_disconnect(channel, SPICE_CHANNEL_CLOSED); spice_session_channel_destroy(c->session, channel); @@ -91,7 +101,7 @@ static void spice_channel_finalize(GObject *gobject) SpiceChannel *channel = SPICE_CHANNEL(gobject); spice_channel *c = SPICE_CHANNEL_GET_PRIVATE(channel); - fprintf(stderr, "%s %s\n", __FUNCTION__, c->name); + fprintf(stderr, "%s: %s\n", c->name, __FUNCTION__); /* Chain up to the parent class */ if (G_OBJECT_CLASS(spice_channel_parent_class)->finalize) @@ -150,8 +160,6 @@ static void spice_channel_class_init(SpiceChannelClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); - fprintf(stderr, "%s\n", __FUNCTION__); - gobject_class->constructed = spice_channel_constructed; gobject_class->dispose = spice_channel_dispose; gobject_class->finalize = spice_channel_finalize; @@ -370,7 +378,8 @@ static int spice_channel_send(SpiceChannel *channel, void *buf, int len) if (c->tls) { rc = SSL_write(c->ssl, buf, len); if (rc != len) { - fprintf(stderr, "%s: SSL_write: %d / %d\n", __FUNCTION__, rc, len); + fprintf(stderr, "%s: %s: SSL_write: %d / %d\n", + c->name, __FUNCTION__, rc, len); } } else { rc = send(c->socket, buf, len, 0); @@ -389,7 +398,7 @@ static int spice_channel_recv(SpiceChannel *channel, void *buf, int len) return rc; } if (rc == 0) { - fprintf(stderr, "channel/tls eof: %s\n", c->name); + fprintf(stderr, "%s: channel/tls eof\n", c->name); spice_channel_disconnect(channel, SPICE_CHANNEL_CLOSED); return 0; } @@ -397,7 +406,7 @@ static int spice_channel_recv(SpiceChannel *channel, void *buf, int len) if (err == SSL_ERROR_WANT_READ) { return 0; } - fprintf(stderr, "channel/tls error: %s: %s\n", + fprintf(stderr, "%s: channel/tls error: %s\n", c->name, ERR_error_string(err, NULL)); spice_channel_disconnect(channel, SPICE_CHANNEL_ERROR_IO); return 0; @@ -407,12 +416,12 @@ static int spice_channel_recv(SpiceChannel *channel, void *buf, int len) case -1: if (errno == EAGAIN) return 0; - fprintf(stderr, "channel error: %s: %s\n", + fprintf(stderr, "%s: channel error: %s\n", c->name, strerror(errno)); spice_channel_disconnect(channel, SPICE_CHANNEL_ERROR_IO); return 0; case 0: - fprintf(stderr, "channel eof: %s\n", c->name); + fprintf(stderr, "%s: channel eof\n", c->name); spice_channel_disconnect(channel, SPICE_CHANNEL_CLOSED); return 0; default: @@ -432,7 +441,8 @@ static void spice_channel_tls_connect(SpiceChannel *channel) if (err == SSL_ERROR_WANT_READ) { return; } - fprintf(stderr, "SSL_connect: %s", ERR_error_string(err, NULL)); + fprintf(stderr, "%s: SSL_connect: %s", + c->name, ERR_error_string(err, NULL)); spice_channel_emit_event(channel, SPICE_CHANNEL_ERROR_TLS); } c->state = SPICE_CHANNEL_STATE_LINK_HDR; @@ -491,7 +501,7 @@ static void spice_channel_recv_auth(SpiceChannel *channel) return; } - fprintf(stderr, "channel up: %s\n", c->name); + fprintf(stderr, "%s: channel up\n", c->name); c->state = SPICE_CHANNEL_STATE_READY; spice_channel_emit_event(channel, SPICE_CHANNEL_OPENED); @@ -503,11 +513,13 @@ static void spice_channel_send_link(SpiceChannel *channel) { spice_channel *c = SPICE_CHANNEL_GET_PRIVATE(channel); uint8_t *buffer, *p; + int protocol; c->link_hdr.magic = SPICE_MAGIC; c->link_hdr.size = sizeof(c->link_msg); - switch (c->protocol) { + g_object_get(c->session, "protocol", &protocol, NULL); + switch (protocol) { case 1: /* protocol 1 == major 1, old 0.4 protocol, last active minor */ c->link_hdr.major_version = 1; c->link_hdr.minor_version = 3; @@ -521,7 +533,7 @@ static void spice_channel_send_link(SpiceChannel *channel) c->marshallers = spice_message_marshallers_get(); break; default: - PANIC("unknown major %d", c->protocol); + PANIC("unknown major %d", protocol); } c->link_msg.connection_id = c->connection_id; @@ -568,8 +580,8 @@ static void spice_channel_recv_link_hdr(SpiceChannel *channel) if (c->peer_hdr.major_version != c->link_hdr.major_version) { if (c->peer_hdr.major_version == 1) { /* enter spice 0.4 mode */ - c->protocol = 1; - fprintf(stderr, "switching to protocol 1 (spice 0.4)\n"); + g_object_set(c->session, "protocol", 1, NULL); + fprintf(stderr, "%s: switching to protocol 1 (spice 0.4)\n", c->name); spice_channel_disconnect(channel, SPICE_CHANNEL_NONE); spice_channel_connect(channel); return; @@ -591,8 +603,8 @@ static void spice_channel_recv_link_msg(SpiceChannel *channel) c->peer_hdr.size - c->peer_pos); c->peer_pos += rc; if (c->peer_pos != c->peer_hdr.size) { - fprintf(stderr, "%s: incomplete link reply (%d/%d)\n", __FUNCTION__, - rc, c->peer_hdr.size); + fprintf(stderr, "%s: %s: incomplete link reply (%d/%d)\n", + c->name, __FUNCTION__, rc, c->peer_hdr.size); return; } switch (c->peer_msg->error) { @@ -601,20 +613,20 @@ static void spice_channel_recv_link_msg(SpiceChannel *channel) break; case SPICE_LINK_ERR_NEED_SECURED: c->tls = true; - fprintf(stderr, "switching to tls\n"); + fprintf(stderr, "%s: switching to tls\n", c->name); spice_channel_disconnect(channel, SPICE_CHANNEL_NONE); spice_channel_connect(channel); return; default: - fprintf(stderr, "%s: unhandled error %d\n", __FUNCTION__, - c->peer_msg->error); + fprintf(stderr, "%s: %s: unhandled error %d\n", + c->name, __FUNCTION__, c->peer_msg->error); spice_channel_disconnect(channel, SPICE_CHANNEL_ERROR_LINK); return; } num_caps = c->peer_msg->num_channel_caps + c->peer_msg->num_common_caps; if (num_caps) { - fprintf(stderr, "%s: %d caps\n", __FUNCTION__, num_caps); + fprintf(stderr, "%s: %s: %d caps\n", c->name, __FUNCTION__, num_caps); } #if 0 @@ -775,8 +787,6 @@ SpiceChannel *spice_channel_new(SpiceSession *s, int type, int id) SpiceChannel *channel; GType gtype = 0; - fprintf(stderr, "%s: %d:%d\n", __FUNCTION__, type, id); - switch (type) { case SPICE_CHANNEL_MAIN: gtype = SPICE_TYPE_MAIN_CHANNEL; @@ -806,9 +816,6 @@ SpiceChannel *spice_channel_new(SpiceSession *s, int type, int id) void spice_channel_destroy(SpiceChannel *channel) { - spice_channel *c = SPICE_CHANNEL_GET_PRIVATE(channel); - - fprintf(stderr, "%s %s\n", __FUNCTION__, c->name); g_object_unref(channel); } @@ -895,7 +902,8 @@ reconnect: c->state = SPICE_CHANNEL_STATE_TLS; return 0; } - fprintf(stderr, "SSL_connect: %s", ERR_error_string(err, NULL)); + fprintf(stderr, "%s: SSL_connect: %s", + c->name, ERR_error_string(err, NULL)); spice_channel_emit_event(channel, SPICE_CHANNEL_ERROR_TLS); } } diff --git a/gtk/spice-session.c b/gtk/spice-session.c index ffb59e2..bcc44bf 100644 --- a/gtk/spice-session.c +++ b/gtk/spice-session.c @@ -20,6 +20,7 @@ struct spice_session { char *ca_file; struct addrinfo ai; int connection_id; + int protocol; SpiceChannel *cmain; Ring channels; }; @@ -42,6 +43,7 @@ enum { PROP_CA_FILE, PROP_IPV4, PROP_IPV6, + PROP_PROTOCOL, }; /* signals */ @@ -121,6 +123,9 @@ static void spice_session_get_property(GObject *gobject, case PROP_CA_FILE: g_value_set_string(value, s->ca_file); break; + case PROP_PROTOCOL: + g_value_set_int(value, s->protocol); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec); break; @@ -162,6 +167,9 @@ static void spice_session_set_property(GObject *gobject, str = g_value_get_string(value); s->ca_file = str ? strdup(str) : NULL; break; + case PROP_PROTOCOL: + s->protocol = g_value_get_int(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec); break; @@ -237,6 +245,18 @@ static void spice_session_class_init(SpiceSessionClass *klass) G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); + g_object_class_install_property + (gobject_class, PROP_PROTOCOL, + g_param_spec_int("protocol", + "Protocol", + "Spice protocol major version", + 1, 2, 2, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB)); + signals[SPICE_SESSION_CHANNEL_NEW] = g_signal_new("spice-session-channel-new", G_OBJECT_CLASS_TYPE(gobject_class), diff --git a/gtk/spice-widget.c b/gtk/spice-widget.c index 81696b4..a79ac23 100644 --- a/gtk/spice-widget.c +++ b/gtk/spice-widget.c @@ -1204,7 +1204,6 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data) int id = spice_channel_id(channel); if (SPICE_IS_MAIN_CHANNEL(channel)) { - fprintf(stderr, "%s: main channel\n", __FUNCTION__); d->main = channel; g_signal_connect(channel, "spice-main-mouse-update", G_CALLBACK(mouse_update), display); @@ -1213,7 +1212,6 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data) } if (SPICE_IS_DISPLAY_CHANNEL(channel)) { - fprintf(stderr, "%s: display channel\n", __FUNCTION__); if (id != d->channel_id) return; d->display = channel; @@ -1228,7 +1226,6 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data) } if (SPICE_IS_CURSOR_CHANNEL(channel)) { - fprintf(stderr, "%s: cursor channel\n", __FUNCTION__); if (id != d->channel_id) return; d->cursor = SPICE_CURSOR_CHANNEL(channel); @@ -1245,13 +1242,11 @@ static void channel_new(SpiceSession *s, SpiceChannel *channel, gpointer data) } if (SPICE_IS_INPUTS_CHANNEL(channel)) { - fprintf(stderr, "%s: inputs channel\n", __FUNCTION__); d->inputs = SPICE_INPUTS_CHANNEL(channel); spice_channel_connect(channel); return; } - fprintf(stderr, "%s: unknown channel object\n", __FUNCTION__); return; } @@ -1285,7 +1280,6 @@ static void channel_destroy(SpiceSession *s, SpiceChannel *channel, gpointer dat return; } - fprintf(stderr, "%s: unknown channel object\n", __FUNCTION__); return; } |