[Spice-devel] [PATCH spice-server v2 1/2] Introduce CommonGraphicsChannelClient

Jonathon Jongsma jjongsma at redhat.com
Fri Mar 3 22:03:03 UTC 2017


On Fri, 2017-03-03 at 14:46 +0000, Frediano Ziglio wrote:
> This prepare for the next patch.
> As network buffer should be specific to the specific
> RedChannelClient we should have one.

This second sentence is unclear to me. Alternate log suggestion:

"The network recieve buffer should be per-client rather than per-
channel. The following patch will make this change, but this common
base class will allow the cursor client and the display client to share
a common implementation."


> 
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
>  server/common-graphics-channel.c | 12 ++++++++++++
>  server/common-graphics-channel.h | 32
> ++++++++++++++++++++++++++++++++
>  server/cursor-channel-client.c   |  2 +-
>  server/cursor-channel-client.h   |  5 ++---
>  server/dcc.c                     |  2 +-
>  server/dcc.h                     | 12 +++++-------
>  6 files changed, 53 insertions(+), 12 deletions(-)
> 
> diff --git a/server/common-graphics-channel.c b/server/common-
> graphics-channel.c
> index bad6e8c..6faf1d7 100644
> --- a/server/common-graphics-channel.c
> +++ b/server/common-graphics-channel.c
> @@ -31,6 +31,8 @@
>  
>  G_DEFINE_ABSTRACT_TYPE(CommonGraphicsChannel,
> common_graphics_channel, RED_TYPE_CHANNEL)
>  
> +G_DEFINE_TYPE(CommonGraphicsChannelClient,
> common_graphics_channel_client, RED_TYPE_CHANNEL_CLIENT)
> +

Perhaps sometime in the future we should change this class to have a
Red namespace. But since CommonGraphicsChannel doesn't have one either,
this name is fine for now.

>  #define GRAPHICS_CHANNEL_PRIVATE(o) \
>      (G_TYPE_INSTANCE_GET_PRIVATE((o), TYPE_COMMON_GRAPHICS_CHANNEL,
> CommonGraphicsChannelPrivate))
>  
> @@ -188,3 +190,13 @@ QXLInstance*
> common_graphics_channel_get_qxl(CommonGraphicsChannel *self)
>  {
>      return self->priv->qxl;
>  }
> +
> +static void
> +common_graphics_channel_client_init(CommonGraphicsChannelClient
> *self)
> +{
> +}
> +
> +static void
> +common_graphics_channel_client_class_init(CommonGraphicsChannelClien
> tClass *klass)
> +{
> +}
> diff --git a/server/common-graphics-channel.h b/server/common-
> graphics-channel.h
> index 4d88148..bdcb2c8 100644
> --- a/server/common-graphics-channel.h
> +++ b/server/common-graphics-channel.h
> @@ -70,6 +70,38 @@ enum {
>      RED_PIPE_ITEM_TYPE_COMMON_LAST
>  };
>  
> +#define TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT
> common_graphics_channel_client_get_type()
> +
> +#define COMMON_GRAPHICS_CHANNEL_CLIENT(obj) \
> +    (G_TYPE_CHECK_INSTANCE_CAST((obj),
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT, \
> +    CommonGraphicsChannelClient))
> +#define COMMON_GRAPHICS_CHANNEL_CLIENT_CLASS(klass) \
> +    (G_TYPE_CHECK_CLASS_CAST((klass),
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT, \
> +    CommonGraphicsChannelClientClass))
> +#define COMMON_IS_GRAPHICS_CHANNEL_CLIENT(obj) \
> +    (G_TYPE_CHECK_INSTANCE_TYPE((obj),
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT))
> +#define COMMON_IS_GRAPHICS_CHANNEL_CLIENT_CLASS(klass) \
> +    (G_TYPE_CHECK_CLASS_TYPE((klass),
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT))
> +#define COMMON_GRAPHICS_CHANNEL_CLIENT_GET_CLASS(obj) \
> +    (G_TYPE_INSTANCE_GET_CLASS((obj),
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT, \
> +    CommonGraphicsChannelClientClass))
> +
> +typedef struct CommonGraphicsChannelClient
> CommonGraphicsChannelClient;
> +typedef struct CommonGraphicsChannelClientClass
> CommonGraphicsChannelClientClass;
> +typedef struct CommonGraphicsChannelClientPrivate
> CommonGraphicsChannelClientPrivate;
> +
> +struct CommonGraphicsChannelClient {
> +    RedChannelClient parent;
> +
> +    CommonGraphicsChannelClientPrivate *priv;
> +};
> +
> +struct CommonGraphicsChannelClientClass {
> +    RedChannelClientClass parent_class;
> +};
> +
> +GType common_graphics_channel_client_get_type(void) G_GNUC_CONST;
> +
>  G_END_DECLS
>  
>  #endif /* _COMMON_GRAPHICS_CHANNEL_H */
> diff --git a/server/cursor-channel-client.c b/server/cursor-channel-
> client.c
> index 1a05f73..db74bde 100644
> --- a/server/cursor-channel-client.c
> +++ b/server/cursor-channel-client.c
> @@ -35,7 +35,7 @@
>  #define CURSOR_CACHE_HASH_KEY(id) ((id) & CURSOR_CACHE_HASH_MASK)
>  #define CURSOR_CLIENT_TIMEOUT 30000000000ULL //nano
>  
> -G_DEFINE_TYPE(CursorChannelClient, cursor_channel_client,
> RED_TYPE_CHANNEL_CLIENT)
> +G_DEFINE_TYPE(CursorChannelClient, cursor_channel_client,
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT)
>  
>  #define CURSOR_CHANNEL_CLIENT_PRIVATE(o) \
>      (G_TYPE_INSTANCE_GET_PRIVATE((o), TYPE_CURSOR_CHANNEL_CLIENT,
> CursorChannelClientPrivate))
> diff --git a/server/cursor-channel-client.h b/server/cursor-channel-
> client.h
> index e2aa3a8..de2c9d6 100644
> --- a/server/cursor-channel-client.h
> +++ b/server/cursor-channel-client.h
> @@ -45,9 +45,8 @@ typedef struct CursorChannelClient
> CursorChannelClient;
>  typedef struct CursorChannelClientClass CursorChannelClientClass;
>  typedef struct CursorChannelClientPrivate
> CursorChannelClientPrivate;
>  
> -struct CursorChannelClient
> -{
> -    RedChannelClient parent;
> +struct CursorChannelClient {
> +    CommonGraphicsChannelClient parent;
>  
>      CursorChannelClientPrivate *priv;
>  };
> diff --git a/server/dcc.c b/server/dcc.c
> index 898e074..01b90ba 100644
> --- a/server/dcc.c
> +++ b/server/dcc.c
> @@ -27,7 +27,7 @@
>  #include "spice-server-enums.h"
>  #include "glib-compat.h"
>  
> -G_DEFINE_TYPE(DisplayChannelClient, display_channel_client,
> RED_TYPE_CHANNEL_CLIENT)
> +G_DEFINE_TYPE(DisplayChannelClient, display_channel_client,
> TYPE_COMMON_GRAPHICS_CHANNEL_CLIENT)
>  
>  #define DISPLAY_CLIENT_SHORT_TIMEOUT 15000000000ULL //nano
>  #define DISPLAY_FREE_LIST_DEFAULT_SIZE 128
> diff --git a/server/dcc.h b/server/dcc.h
> index 71ac42c..31e25b5 100644
> --- a/server/dcc.h
> +++ b/server/dcc.h
> @@ -24,7 +24,7 @@
>  #include "image-cache.h"
>  #include "pixmap-cache.h"
>  #include "display-limits.h"
> -#include "red-channel-client.h"
> +#include "common-graphics-channel.h"
>  
>  G_BEGIN_DECLS
>  
> @@ -45,18 +45,16 @@ typedef struct DisplayChannelClient
> DisplayChannelClient;
>  typedef struct DisplayChannelClientClass DisplayChannelClientClass;
>  typedef struct DisplayChannelClientPrivate
> DisplayChannelClientPrivate;
>  
> -struct DisplayChannelClient
> -{
> -    RedChannelClient parent;
> +struct DisplayChannelClient {
> +    CommonGraphicsChannelClient parent;
>  
>      int is_low_bandwidth;
>  
>      DisplayChannelClientPrivate *priv;
>  };
>  
> -struct DisplayChannelClientClass
> -{
> -    RedChannelClientClass parent_class;
> +struct DisplayChannelClientClass {
> +    CommonGraphicsChannelClientClass parent_class;
>  };
>  
>  GType display_channel_client_get_type(void) G_GNUC_CONST;


Ack with potential commit log rewording

Acked-by: Jonathon Jongsma <jjongsma at redhat.com>



More information about the Spice-devel mailing list