These constants are saved into record files so their values should not be changed in order to be able to use old record files. Recently 2 different patches has attempted to change these values without noticing the command above the enumeration. A runtime error will occur registering duplicate message numbers as soon as a display is created inside the VM. Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/red-worker.h | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/server/red-worker.h b/server/red-worker.h index 4f64b729..21a08c7b 100644 --- a/server/red-worker.h +++ b/server/red-worker.h @@ -44,16 +44,19 @@ typedef uint32_t RedWorkerMessage; /* Keep message order, only append new messages! * Replay code store enum values into save files. + * To avoid missing this rule the constants ever used by replay are + * explicitly numbered to cause a runtime error when duplicate values + * are inserted into the dispatcher. */ enum { RED_WORKER_MESSAGE_NOP, - RED_WORKER_MESSAGE_UPDATE, - RED_WORKER_MESSAGE_WAKEUP, + RED_WORKER_MESSAGE_UPDATE = 1, /* replay */ + RED_WORKER_MESSAGE_WAKEUP = 2, /* replay */ RED_WORKER_MESSAGE_OOM, RED_WORKER_MESSAGE_READY, /* unused */ - RED_WORKER_MESSAGE_DISPLAY_CONNECT, + RED_WORKER_MESSAGE_DISPLAY_CONNECT = 5, /* replay */ RED_WORKER_MESSAGE_DISPLAY_DISCONNECT, RED_WORKER_MESSAGE_DISPLAY_MIGRATE, RED_WORKER_MESSAGE_START, @@ -67,9 +70,9 @@ enum { RED_WORKER_MESSAGE_ADD_MEMSLOT, RED_WORKER_MESSAGE_DEL_MEMSLOT, RED_WORKER_MESSAGE_RESET_MEMSLOTS, - RED_WORKER_MESSAGE_DESTROY_SURFACES, - RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE, - RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE, + RED_WORKER_MESSAGE_DESTROY_SURFACES = 19, /* replay */ + RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE = 20, /* replay */ + RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE = 21, /* replay */ RED_WORKER_MESSAGE_RESET_CURSOR, RED_WORKER_MESSAGE_RESET_IMAGE_CACHE, RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT, @@ -78,7 +81,7 @@ enum { RED_WORKER_MESSAGE_UPDATE_ASYNC, RED_WORKER_MESSAGE_ADD_MEMSLOT_ASYNC, RED_WORKER_MESSAGE_DESTROY_SURFACES_ASYNC, - RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE_ASYNC, + RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE_ASYNC = 29, /* replay */ RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE_ASYNC, RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC, /* suspend/windows resolution change command */ -- 2.13.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel