[Spice-devel] [PATCH 3/3] Convert RedChannelClient heirarchy to GObject

Frediano Ziglio fziglio at redhat.com
Thu Sep 22 09:37:09 UTC 2016


> 
> Convert the RedChannelClient heirarchy into GObjects. Since the existing
> constructors could fail and return NULL, I inherited the base channel
> client from GInitable, which introduces a dependency on gio.
> 
> When using private structs with GObject, there's a maximum size of (I
> think) 64k, which was exceeded by some of the private structs. To avoid
> this limitation I changed some members to dynamically allocated.

Why not handling the priv memory management manually (g_new/g_free)
instead? This would require less changes.

I think the first comment however is that this patch is too big
and do too much stuff.

The dummy channel is promoted as a new class. I was looking some
days ago (for other reasons) at the dummy and RedChannelClient
creation and it looks that mainly the difference between is that
in the dummy the RedStream parameter is NULL. I though that the 2
function could be merged quite easily and in this case the difference
between the two would just some couple of lines.
Why this "feature" is needed? Looks like only sound use it but what
does it means? Sound channels are not connected to a client? Perhaps
RedStream should have different implementations instead of RedChannel?

The smartchannel separation should be done in a separate patch.

red-channel-client-private.h should be included only by red-channel-client.c.

I'll try to split some stuff.

Frediano


> ---
>  configure.ac                        |   4 +-
>  server/Makefile.am                  |   4 +
>  server/cursor-channel-client.c      |  74 ++--
>  server/cursor-channel-client.h      |  34 +-
>  server/dcc-private.h                |  14 +-
>  server/dcc.c                        | 202 ++++++++--
>  server/dcc.h                        |  37 +-
>  server/display-channel.c            |   4 +-
>  server/dummy-channel-client.c       | 157 ++++++++
>  server/dummy-channel-client.h       |  59 +++
>  server/inputs-channel-client.c      |  56 ++-
>  server/inputs-channel-client.h      |  47 ++-
>  server/main-channel-client.c        | 146 +++++++-
>  server/main-channel-client.h        |  34 +-
>  server/red-channel-client-private.h |   4 +-
>  server/red-channel-client.c         | 717
>  ++++++++++++++++++++++--------------
>  server/red-channel-client.h         |  80 +++-
>  server/red-channel.h                |  33 +-
>  server/reds.h                       |   1 +
>  server/smartcard-channel-client.c   | 414 +++++++++++++++++++++
>  server/smartcard-channel-client.h   | 114 ++++++
>  server/smartcard.c                  | 376 +++----------------
>  server/smartcard.h                  |  21 ++
>  server/sound.c                      |   9 +-
>  server/spice-server.h               |  16 +
>  server/spicevmc.c                   |   6 +-
>  server/tests/test_display_base.c    |   4 +-
>  27 files changed, 1895 insertions(+), 772 deletions(-)
>  create mode 100644 server/dummy-channel-client.c
>  create mode 100644 server/dummy-channel-client.h
>  create mode 100644 server/smartcard-channel-client.c
>  create mode 100644 server/smartcard-channel-client.h
> 




More information about the Spice-devel mailing list