[Spice-devel] [PATCH v2 19/19] Free properly primary surface during replay

Pavel Grunt pgrunt at redhat.com
Wed Nov 30 17:07:23 UTC 2016


On Fri, 2016-11-25 at 14:52 +0000, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
Acked-by: Pavel Grunt <pgrunt at redhat.com>
> ---
>  server/red-replay-qxl.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/server/red-replay-qxl.c b/server/red-replay-qxl.c
> index 2176068..aeaa545 100644
> --- a/server/red-replay-qxl.c
> +++ b/server/red-replay-qxl.c
> @@ -48,6 +48,7 @@ struct SpiceReplay {
>      GArray *id_map; // record id -> replay id
>      GArray *id_map_inv; // replay id -> record id
>      GArray *id_free; // free list
> +    uint8_t *primary_mem;
>      int nsurfaces;
>      int end_pos;
>  
> @@ -1254,6 +1255,8 @@ static void
> replay_handle_create_primary(QXLWorker *worker, SpiceReplay *replay)
>      }
>      read_binary(replay, "data", &size, &mem, 0);
>      surface.group_id = 0;
> +    free(replay->primary_mem);
> +    replay->primary_mem = mem;
>      surface.mem = QXLPHYSICAL_FROM_PTR(mem);
>      worker->create_primary_surface(worker, 0, &surface);
>  }
> @@ -1269,6 +1272,8 @@ static void replay_handle_dev_input(QXLWorker
> *worker, SpiceReplay *replay,
>      case RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE:
>          replay->created_primary = FALSE;
>          worker->destroy_primary_surface(worker, 0);
> +        free(replay->primary_mem);
> +        replay->primary_mem = NULL;
>          break;
>      case RED_WORKER_MESSAGE_DESTROY_SURFACES:
>          replay->created_primary = FALSE;
> @@ -1454,6 +1459,7 @@ SPICE_GNUC_VISIBLE void
> spice_replay_free(SpiceReplay *replay)
>      g_array_free(replay->id_map, TRUE);
>      g_array_free(replay->id_map_inv, TRUE);
>      g_array_free(replay->id_free, TRUE);
> +    free(replay->primary_mem);
>      fclose(replay->fd);
>      free(replay);
>  }


More information about the Spice-devel mailing list