Re: [Spice-devel] [RFC spice-gtk 2/2] channel-display: fix bug when sending preferred video codecs

2019-08-15 Thread Frediano Ziglio
> 
> The transfer between the codecs array and the message payload cannot
> be done with memcpy because the data-type lengths are different
> (gint/uint8_t).
> 
> Signed-off-by: Kevin Pouget 
> ---
>  src/channel-display.c | 8 +++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/src/channel-display.c b/src/channel-display.c
> index 44555e3..37fdbce 100644
> --- a/src/channel-display.c
> +++ b/src/channel-display.c
> @@ -615,11 +615,17 @@ static void
> spice_display_send_client_preferred_video_codecs(SpiceChannel *chann
>  {
>  SpiceMsgOut *out;
>  SpiceMsgcDisplayPreferredVideoCodecType *msg;
> +int i;
> 
>  msg = g_malloc0(sizeof(SpiceMsgcDisplayPreferredVideoCodecType) +
>  (sizeof(SpiceVideoCodecType) * ncodecs));

For similar reason I would change this to

msg = g_malloc0(sizeof(SpiceMsgcDisplayPreferredVideoCodecType) +
(sizeof(msg->codecs[0]) * ncodecs));


>  msg->num_of_codecs = ncodecs;
> -memcpy(msg->codecs, codecs, sizeof(*codecs) * ncodecs);
> +
> +/* cannot memcpy because codecs is gint, but msg->codecs is uint8_t
> + * but safe because codecs[i] <= 255 */
> +for (i = 0; i < ncodecs; i++) {
> +msg->codecs[i] = codecs[i];
> +}
> 
>  out = spice_msg_out_new(channel,
>  SPICE_MSGC_DISPLAY_PREFERRED_VIDEO_CODEC_TYPE);
>  
> out->marshallers->msgc_display_preferred_video_codec_type(out->marshaller,
>  msg);

Good catch!

Not much part of the series (quite independent I would say).

Frediano
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Re: [Spice-devel] [RFC spice-server] fixup! streaming: Restart guest video streams on video-codec changes

2019-08-15 Thread Frediano Ziglio
> 
> Update of the previous patch that resets only the stream channel whose
> preferred codec list has been updated
> 
> Signed-off-by: Kevin Pouget 

Why not just computing the list and call request_new_stream ?
This would require a single file change.

> ---
>  server/main-dispatcher.c | 12 +---
>  server/main-dispatcher.h |  2 +-
>  server/reds.c| 15 ---
>  server/reds.h|  2 +-
>  server/stream-channel.c  |  7 ++-
>  5 files changed, 25 insertions(+), 13 deletions(-)
> 
> diff --git a/server/main-dispatcher.c b/server/main-dispatcher.c
> index 04f5ac88..ef2d4fba 100644
> --- a/server/main-dispatcher.c
> +++ b/server/main-dispatcher.c
> @@ -150,7 +150,7 @@ typedef struct MainDispatcherClientDisconnectMessage {
> 
> 
>  typedef struct MainDispatcherResetStreamChannelMessage {
> -RedClient *client;
> +int32_t channel_id;
>  } MainDispatcherResetStreamChannelMessage;
> 
>  /* channel_event - calls core->channel_event, must be done in main thread */
> @@ -212,11 +212,9 @@ static void
> main_dispatcher_handle_reset_stream_channel(void *opaque,
>  void *payload)
>  {
>  RedsState *reds = opaque;
> -MainDispatcherResetStreamChannelMessage __attribute__((unused)) *msg =
> payload;
> -
> -/* TODO: reset only the char device linked to msg.client */
> +MainDispatcherResetStreamChannelMessage *msg = payload;
> 
> -reds_reset_all_stream_char_devices(reds);
> +reds_reset_stream_channel(reds, msg->channel_id);
>  }
> 
>  void main_dispatcher_seamless_migrate_dst_complete(MainDispatcher *self,
> @@ -263,11 +261,11 @@ void main_dispatcher_client_disconnect(MainDispatcher
> *self, RedClient *client)
>  }
>  }
> 
> -void main_dispatcher_reset_stream_channels(MainDispatcher *self, RedClient
> *client)
> +void main_dispatcher_reset_stream_channel(MainDispatcher *self, int32_t
> channel_id)
>  {
>  MainDispatcherResetStreamChannelMessage msg;
> 
> -msg.client = client;
> +msg.channel_id = channel_id;
> 
>  dispatcher_send_message(DISPATCHER(self),
>  MAIN_DISPATCHER_RESET_STREAM_CHANNELS,
>  &msg);
> diff --git a/server/main-dispatcher.h b/server/main-dispatcher.h
> index 6d5f50a0..5f386bf2 100644
> --- a/server/main-dispatcher.h
> +++ b/server/main-dispatcher.h
> @@ -58,7 +58,7 @@ void main_dispatcher_set_mm_time_latency(MainDispatcher
> *self, RedClient *client
>   * that triggered the client destruction.
>   */
>  void main_dispatcher_client_disconnect(MainDispatcher *self, RedClient
>  *client);
> -void main_dispatcher_reset_stream_channels(MainDispatcher *self, RedClient
> *client);
> +void main_dispatcher_reset_stream_channel(MainDispatcher *self, int32_t
> channel_id);
> 
>  MainDispatcher* main_dispatcher_new(RedsState *reds);
> 
> diff --git a/server/reds.c b/server/reds.c
> index 9aae838d..d47a0237 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -3301,15 +3301,24 @@ static void reds_on_char_device_destroy(RedsState
> *reds,
>  reds->char_devices = g_list_remove(reds->char_devices, dev);
>  }
> 
> -void reds_reset_all_stream_char_devices(RedsState *reds)
> +void reds_reset_stream_channel(RedsState *reds, int32_t channel_id)
>  {
>  RedCharDevice *dev;
> 
>  GLIST_FOREACH(reds->char_devices, RedCharDevice, dev) {
> -if (IS_STREAM_DEVICE(dev)) {
> -stream_device_reset_channels(STREAM_DEVICE(dev));
> +if (!IS_STREAM_DEVICE(dev)) {
> +continue;
>  }
> +
> +StreamDevice *stream_dev = STREAM_DEVICE(dev);
> +if (stream_device_get_stream_channel_id(stream_dev) != channel_id) {
> +continue;
> +}
> +
> +stream_device_reset_channels(stream_dev);
> +return;
>  }
> +spice_warning("channel %d not found", channel_id);
>  }
> 
>  static int spice_server_char_device_add_interface(SpiceServer *reds,
> diff --git a/server/reds.h b/server/reds.h
> index ec106394..6d0ed3ee 100644
> --- a/server/reds.h
> +++ b/server/reds.h
> @@ -53,7 +53,7 @@ bool reds_config_get_playback_compression(RedsState *reds);
> // used by playback
> 
>  void reds_send_device_display_info(RedsState *reds);
>  void reds_handle_agent_mouse_event(RedsState *reds, const VDAgentMouseState
>  *mouse_state); // used by inputs_channel
> -void reds_reset_all_stream_char_devices(RedsState *reds);
> +void reds_reset_stream_channel(RedsState *reds, int32_t channel_id);
>  GArray* reds_get_renderers(RedsState *reds);
>  char *reds_get_video_codec_fullname(RedVideoCodec *codec);
> 
> diff --git a/server/stream-channel.c b/server/stream-channel.c
> index 99ce7c9a..ea53a451 100644
> --- a/server/stream-channel.c
> +++ b/server/stream-channel.c
> @@ -468,8 +468,13 @@
> stream_channel_handle_preferred_video_codec_type(RedChannelClient *rcc,
>  /* Reset video streams */
>  RedClient *client = red_channel_client_get_client(rcc);
>  RedsState *reds = red_client_

[Spice-devel] [PATCH spice-server] reds: Fix indentation of spice_server_char_device_add_interface

2019-08-15 Thread Frediano Ziglio
Signed-off-by: Frediano Ziglio 
---
 server/reds.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/reds.c b/server/reds.c
index a3795ab90..c294137be 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -3301,8 +3301,8 @@ static void reds_on_char_device_destroy(RedsState *reds,
 reds->char_devices = g_list_remove(reds->char_devices, dev);
 }
 
-static int spice_server_char_device_add_interface(SpiceServer *reds,
-   SpiceBaseInstance *sin)
+static int
+spice_server_char_device_add_interface(SpiceServer *reds, SpiceBaseInstance 
*sin)
 {
 SpiceCharDeviceInstance* char_device =
 SPICE_UPCAST(SpiceCharDeviceInstance, sin);
-- 
2.20.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

[Spice-devel] [PATCH spice-server] Remove reference to removed ABI

2019-08-15 Thread Frediano Ziglio
spice_server_migrate_client_state was removed by

  commit 3c6b4e415fa1e2ce212d09ba15c90cd58b4ec4b4
  Author: Marc-André Lureau 
  Date:   Fri Oct 24 17:16:35 2014 +0200

Remove spice-experimental

Remove unneded symbols that nobody should be using anyway.
ABI is modified with this patch, but the library version is not bumped.

Signed-off-by: Frediano Ziglio 
---
 server/spice-server.syms | 1 -
 1 file changed, 1 deletion(-)

diff --git a/server/spice-server.syms b/server/spice-server.syms
index e33526f31..8da46c20c 100644
--- a/server/spice-server.syms
+++ b/server/spice-server.syms
@@ -10,7 +10,6 @@ global:
 spice_server_get_sock_info;
 spice_server_init;
 spice_server_kbd_leds;
-spice_server_migrate_client_state;
 spice_server_migrate_end;
 spice_server_migrate_info;
 spice_server_migrate_start;
-- 
2.20.1

___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Re: [Spice-devel] [spice-gtk v3 8/9] usb-redir: enable redirection of emulated CD drive

2019-08-15 Thread Yuri Benditovich
On Tue, Aug 13, 2019 at 2:29 PM Frediano Ziglio  wrote:
>
> >
> > Add implementation of emulated device to build.
> > Now it is possible to create emulated CD devices.
> >
> > Signed-off-by: Yuri Benditovich 
>
> Would be better to compile only if needed, like
>
> https://gitlab.freedesktop.org/fziglio/spice-gtk/commit/f74443390902335a0233bb32e1d94507e5b9f5f4
>
> ?
>

No problem...

> > ---
> >  src/meson.build | 7 +++
> >  1 file changed, 7 insertions(+)
> >
> > diff --git a/src/meson.build b/src/meson.build
> > index fe19c16..3837a9d 100644
> > --- a/src/meson.build
> > +++ b/src/meson.build
> > @@ -124,6 +124,13 @@ spice_client_glib_sources = [
> >'usb-backend.c',
> >'usb-emulation.h',
> >'usb-backend.h',
> > +  'usb-device-cd.c',
> > +  'usb-device-cd.h',
> > +  'cd-scsi.c',
> > +  'cd-scsi.h',
> > +  'cd-scsi-dev-params.h',
> > +  'cd-usb-bulk-msd.c',
> > +  'cd-usb-bulk-msd.h',
> >'vmcstream.c',
> >'vmcstream.h',
> >  ]
>
> Frediano
___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Re: [Spice-devel] [PATCH spice-server] Remove reference to removed ABI

2019-08-15 Thread Uri Lublin

On 8/15/19 11:30 AM, Frediano Ziglio wrote:

spice_server_migrate_client_state was removed by

   commit 3c6b4e415fa1e2ce212d09ba15c90cd58b4ec4b4
   Author: Marc-André Lureau 
   Date:   Fri Oct 24 17:16:35 2014 +0200

 Remove spice-experimental

 Remove unneded symbols that nobody should be using anyway.
 ABI is modified with this patch, but the library version is not bumped.

Signed-off-by: Frediano Ziglio 


Ack.

Uri.


---
  server/spice-server.syms | 1 -
  1 file changed, 1 deletion(-)

diff --git a/server/spice-server.syms b/server/spice-server.syms
index e33526f31..8da46c20c 100644
--- a/server/spice-server.syms
+++ b/server/spice-server.syms
@@ -10,7 +10,6 @@ global:
  spice_server_get_sock_info;
  spice_server_init;
  spice_server_kbd_leds;
-spice_server_migrate_client_state;
  spice_server_migrate_end;
  spice_server_migrate_info;
  spice_server_migrate_start;



___
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel