[Spice-devel] [PATCH 05/23] simplify release of CREATE_SURFACE and DESTROY_SURFACE pipe items

Frediano Ziglio fziglio at redhat.com
Mon May 16 13:31:15 UTC 2016


Putting base as first item the default free function is fine.

Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/dcc.c             | 16 ++--------------
 server/dcc.h             |  2 +-
 server/display-channel.h |  2 +-
 3 files changed, 4 insertions(+), 16 deletions(-)

diff --git a/server/dcc.c b/server/dcc.c
index 6f08cd9..a6d4fc4 100644
--- a/server/dcc.c
+++ b/server/dcc.c
@@ -1653,24 +1653,12 @@ static void release_item_before_push(DisplayChannelClient *dcc, RedPipeItem *ite
     case RED_PIPE_ITEM_TYPE_UPGRADE:
     case RED_PIPE_ITEM_TYPE_IMAGE:
     case RED_PIPE_ITEM_TYPE_MONITORS_CONFIG:
-        red_pipe_item_unref(item);
-        break;
-    case RED_PIPE_ITEM_TYPE_CREATE_SURFACE: {
-        RedSurfaceCreateItem *surface_create = SPICE_CONTAINEROF(item, RedSurfaceCreateItem,
-                                                                 pipe_item);
-        free(surface_create);
-        break;
-    }
-    case RED_PIPE_ITEM_TYPE_DESTROY_SURFACE: {
-        RedSurfaceDestroyItem *surface_destroy = SPICE_CONTAINEROF(item, RedSurfaceDestroyItem,
-                                                                   pipe_item);
-        free(surface_destroy);
-        break;
-    }
+    case RED_PIPE_ITEM_TYPE_CREATE_SURFACE:
     case RED_PIPE_ITEM_TYPE_INVAL_ONE:
     case RED_PIPE_ITEM_TYPE_VERB:
     case RED_PIPE_ITEM_TYPE_MIGRATE_DATA:
     case RED_PIPE_ITEM_TYPE_PIXMAP_SYNC:
+    case RED_PIPE_ITEM_TYPE_DESTROY_SURFACE:
     case RED_PIPE_ITEM_TYPE_PIXMAP_RESET:
     case RED_PIPE_ITEM_TYPE_INVAL_PALETTE_CACHE:
     case RED_PIPE_ITEM_TYPE_STREAM_ACTIVATE_REPORT:
diff --git a/server/dcc.h b/server/dcc.h
index 89934bc..63a7496 100644
--- a/server/dcc.h
+++ b/server/dcc.h
@@ -122,8 +122,8 @@ struct DisplayChannelClient {
 #define RCC_TO_DCC(rcc) SPICE_CONTAINEROF((rcc), DisplayChannelClient, common.base)
 
 typedef struct RedSurfaceCreateItem {
-    SpiceMsgSurfaceCreate surface_create;
     RedPipeItem pipe_item;
+    SpiceMsgSurfaceCreate surface_create;
 } RedSurfaceCreateItem;
 
 typedef struct RedGlScanoutUnixItem {
diff --git a/server/display-channel.h b/server/display-channel.h
index 76668de..647d8c0 100644
--- a/server/display-channel.h
+++ b/server/display-channel.h
@@ -241,8 +241,8 @@ static inline int get_stream_id(DisplayChannel *display, Stream *stream)
 }
 
 typedef struct RedSurfaceDestroyItem {
-    SpiceMsgSurfaceDestroy surface_destroy;
     RedPipeItem pipe_item;
+    SpiceMsgSurfaceDestroy surface_destroy;
 } RedSurfaceDestroyItem;
 
 typedef struct RedUpgradeItem {
-- 
2.7.4



More information about the Spice-devel mailing list