[Spice-devel] [PATCH 1/3] Spice-session: Add preferred-compression property.
Christophe Fergeau
cfergeau at redhat.com
Fri May 29 09:16:53 PDT 2015
On Fri, Apr 17, 2015 at 12:40:23PM +0200, Javier Celaya wrote:
> Also, depend on the spice-common commit that introduces the
> SpiceImageCompress enum.
> ---
> gtk/spice-session.c | 26 ++++++++++++++++++++++++++
> spice-common | 2 +-
> 2 files changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/gtk/spice-session.c b/gtk/spice-session.c
> index 020a70e..c83d239 100644
> --- a/gtk/spice-session.c
> +++ b/gtk/spice-session.c
> @@ -117,6 +117,7 @@ struct _SpiceSessionPrivate {
> uint32_t n_display_channels;
> guint8 uuid[16];
> gchar *name;
> + int preferred_compression;
>
> /* associated objects */
> SpiceAudio *audio_manager;
> @@ -203,6 +204,7 @@ enum {
> PROP_SHARE_DIR_RO,
> PROP_USERNAME,
> PROP_UNIX_PATH,
> + PROP_PREF_COMPRESS,
> };
>
> /* signals */
> @@ -658,6 +660,9 @@ static void spice_session_get_property(GObject *gobject,
> case PROP_SHARE_DIR_RO:
> g_value_set_boolean(value, s->share_dir_ro);
> break;
> + case PROP_PREF_COMPRESS:
> + g_value_set_int(value, s->preferred_compression);
> + break;
> default:
> G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec);
> break;
> @@ -794,6 +799,9 @@ static void spice_session_set_property(GObject *gobject,
> case PROP_SHARE_DIR_RO:
> s->share_dir_ro = g_value_get_boolean(value);
> break;
> + case PROP_PREF_COMPRESS:
> + s->preferred_compression = g_value_get_int(value);
> + break;
> default:
> G_OBJECT_WARN_INVALID_PROPERTY_ID(gobject, prop_id, pspec);
> break;
> @@ -1403,6 +1411,24 @@ static void spice_session_class_init(SpiceSessionClass *klass)
> G_PARAM_CONSTRUCT |
> G_PARAM_STATIC_STRINGS));
>
> + /**
> + * SpiceSession:preferred-compression:
> + *
> + * The image compression algorithm the client prefers to use. It is
> + * reported to the server.
> + *
> + * Since: 0.29
> + **/
> + g_object_class_install_property
> + (gobject_class, PROP_PREF_COMPRESS,
> + g_param_spec_int("preferred-compression",
> + "Preferred image compression algorithm",
> + "Preferred image compression algorithm",
> + SPICE_IMAGE_COMPRESS_INVALID, SPICE_IMAGE_COMPRESS_ENUM_END - 1,
> + SPICE_IMAGE_COMPRESS_INVALID,
> + G_PARAM_READWRITE |
> + G_PARAM_STATIC_STRINGS));
I'd prefer if we used a g_param_spec_enum here, however this means doing
the registration by hand (see how it's done in gtk/spice-glib-enums.c)
as glib-mkenums does not like the generated enums.h (because of enum
name in typedef enum Foo {};)
This would look like:
#define SPICE_TYPE_CHANNEL_EVENT spice_channel_event_get_type()
GType spice_channel_event_get_type (void);
static const GEnumValue _spice_channel_event_values[] = {
{ SPICE_CHANNEL_NONE, "SPICE_CHANNEL_NONE", "none" },
{ SPICE_CHANNEL_OPENED, "SPICE_CHANNEL_OPENED", "opened" },
{ SPICE_CHANNEL_SWITCHING, "SPICE_CHANNEL_SWITCHING", "switching" },
{ SPICE_CHANNEL_CLOSED, "SPICE_CHANNEL_CLOSED", "closed" },
{ SPICE_CHANNEL_ERROR_CONNECT, "SPICE_CHANNEL_ERROR_CONNECT", "error-connect" },
{ SPICE_CHANNEL_ERROR_TLS, "SPICE_CHANNEL_ERROR_TLS", "error-tls" },
{ SPICE_CHANNEL_ERROR_LINK, "SPICE_CHANNEL_ERROR_LINK", "error-link" },
{ SPICE_CHANNEL_ERROR_AUTH, "SPICE_CHANNEL_ERROR_AUTH", "error-auth" },
{ SPICE_CHANNEL_ERROR_IO, "SPICE_CHANNEL_ERROR_IO", "error-io" },
{ 0, NULL, NULL }
};
G_STATIC_ASSERT(G_N_ELEMENTS(_spice_channel_event_values) == SPICE_IMAGE_COMPRESS_ENUM_END - 1);
GType
spice_channel_event_get_type (void)
{
static GType type = 0;
static volatile gsize type_volatile = 0;
if (g_once_init_enter(&type_volatile)) {
type = g_enum_register_static ("SpiceChannelEvent", _spice_channel_event_values);
g_once_init_leave(&type_volatile, type);
}
return type;
}
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/spice-devel/attachments/20150529/7d1a000f/attachment.sig>
More information about the Spice-devel
mailing list