[Spice-devel] [PATCH spice-server 1/3] red-qxl: Move private declarations to red-worker.h

Frediano Ziglio fziglio at redhat.com
Mon Sep 4 13:37:05 UTC 2017


> 
> > On 1 Sep 2017, at 11:36, Frediano Ziglio <fziglio at redhat.com> wrote:
> > 
> > RedQxl and RedWorker are quite bound together running
> > CursorChannel and DisplayChannel in a separate thread
> > marshalling (RedQxl) and unmarshalling and executing
> > (RedWorker) requests.
> > Make the communication between them private trying
> > to maintaining the implementation in these 2 files.
> 
> There is a grammar error. I think you intended something like
> “trying to facilitate maintaining”. Then if that’s the case, I’d just write
> “trying to facilitate maintaining these two files"
> 

Wouldn't the full sentence be:

Make the communication between them private trying
to facilitate maintaining these two files.

does not sound really good.

> 
> > 
> > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > ---
> > server/red-qxl.h        | 241
> > ----------------------------------------------
> > server/red-replay-qxl.c |   1 +
> > server/red-worker.h     | 248
> > ++++++++++++++++++++++++++++++++++++++++++++++++
> > 3 files changed, 249 insertions(+), 241 deletions(-)
> > 
> > Maybe messages should be moved in a separate file in order to avoid
> > having to include red-worker.h from red-replay-qxl.c ?
> > 
> > diff --git a/server/red-qxl.h b/server/red-qxl.h
> > index f925f065..3ac7bf90 100644
> > --- a/server/red-qxl.h
> > +++ b/server/red-qxl.h
> > @@ -35,8 +35,6 @@ void red_qxl_set_compression_level(QXLInstance *qxl, int
> > level);
> > void red_qxl_stop(QXLInstance *qxl);
> > void red_qxl_start(QXLInstance *qxl);
> > uint32_t red_qxl_get_ram_size(QXLInstance *qxl);
> > -void red_qxl_async_complete(QXLInstance *qxl, AsyncCommand
> > *async_command);
> > -struct Dispatcher *red_qxl_get_dispatcher(QXLInstance *qxl);
> > gboolean red_qxl_use_client_monitors_config(QXLInstance *qxl);
> > gboolean red_qxl_client_monitors_config(QXLInstance *qxl,
> > VDAgentMonitorsConfig *monitors_config);
> > gboolean red_qxl_get_primary_active(QXLInstance *qxl);
> > @@ -64,243 +62,4 @@ void red_qxl_set_client_capabilities(QXLInstance *qxl,
> >                                      uint8_t client_present,
> >                                      uint8_t
> >                                      caps[SPICE_CAPABILITIES_SIZE]);
> > 
> > -typedef uint32_t RedWorkerMessage;
> > -
> > -/* Keep message order, only append new messages!
> > - * Replay code store enum values into save files.
> > - */
> > -enum {
> > -    RED_WORKER_MESSAGE_NOP,
> > -
> > -    RED_WORKER_MESSAGE_UPDATE,
> > -    RED_WORKER_MESSAGE_WAKEUP,
> > -    RED_WORKER_MESSAGE_OOM,
> > -    RED_WORKER_MESSAGE_READY, /* unused */
> > -
> > -    RED_WORKER_MESSAGE_DISPLAY_CONNECT,
> > -    RED_WORKER_MESSAGE_DISPLAY_DISCONNECT,
> > -    RED_WORKER_MESSAGE_DISPLAY_MIGRATE,
> > -    RED_WORKER_MESSAGE_START,
> > -    RED_WORKER_MESSAGE_STOP,
> > -    RED_WORKER_MESSAGE_CURSOR_CONNECT,
> > -    RED_WORKER_MESSAGE_CURSOR_DISCONNECT,
> > -    RED_WORKER_MESSAGE_CURSOR_MIGRATE,
> > -    RED_WORKER_MESSAGE_SET_COMPRESSION,
> > -    RED_WORKER_MESSAGE_SET_STREAMING_VIDEO,
> > -    RED_WORKER_MESSAGE_SET_MOUSE_MODE,
> > -    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_RESET_CURSOR,
> > -    RED_WORKER_MESSAGE_RESET_IMAGE_CACHE,
> > -    RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT,
> > -    RED_WORKER_MESSAGE_LOADVM_COMMANDS,
> > -    /* async commands */
> > -    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_DESTROY_PRIMARY_SURFACE_ASYNC,
> > -    RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC,
> > -    /* suspend/windows resolution change command */
> > -    RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC,
> > -
> > -    RED_WORKER_MESSAGE_DISPLAY_CHANNEL_CREATE, /* unused */
> > -    RED_WORKER_MESSAGE_CURSOR_CHANNEL_CREATE, /* unused */
> > -
> > -    RED_WORKER_MESSAGE_MONITORS_CONFIG_ASYNC,
> > -    RED_WORKER_MESSAGE_DRIVER_UNLOAD,
> > -    RED_WORKER_MESSAGE_GL_SCANOUT,
> > -    RED_WORKER_MESSAGE_GL_DRAW_ASYNC,
> > -    RED_WORKER_MESSAGE_SET_VIDEO_CODECS,
> > -
> > -    /* close worker thread */
> > -    RED_WORKER_MESSAGE_CLOSE_WORKER,
> > -
> > -    RED_WORKER_MESSAGE_COUNT // LAST
> > -};
> > -
> > -typedef struct RedWorkerMessageDisplayConnect {
> > -    RedClient * client;
> > -    RedsStream * stream;
> > -    RedChannelCapabilities caps;   // red_worker should reset
> > -    int migration;
> > -} RedWorkerMessageDisplayConnect;
> > -
> > -typedef struct RedWorkerMessageDisplayDisconnect {
> > -    RedChannelClient *rcc;
> > -} RedWorkerMessageDisplayDisconnect;
> > -
> > -typedef struct RedWorkerMessageDisplayMigrate {
> > -    RedChannelClient *rcc;
> > -} RedWorkerMessageDisplayMigrate;
> > -
> > -typedef struct RedWorkerMessageCursorConnect {
> > -    RedClient *client;
> > -    RedsStream *stream;
> > -    int migration;
> > -    RedChannelCapabilities caps;   // red_worker should reset
> > -} RedWorkerMessageCursorConnect;
> > -
> > -typedef struct RedWorkerMessageCursorDisconnect {
> > -    RedChannelClient *rcc;
> > -} RedWorkerMessageCursorDisconnect;
> > -
> > -typedef struct RedWorkerMessageCursorMigrate {
> > -    RedChannelClient *rcc;
> > -} RedWorkerMessageCursorMigrate;
> > -
> > -typedef struct RedWorkerMessageUpdate {
> > -    uint32_t surface_id;
> > -    QXLRect * qxl_area;
> > -    QXLRect * qxl_dirty_rects;
> > -    uint32_t num_dirty_rects;
> > -    uint32_t clear_dirty_region;
> > -} RedWorkerMessageUpdate;
> > -
> > -typedef struct RedWorkerMessageAsync {
> > -    AsyncCommand *cmd;
> > -} RedWorkerMessageAsync;
> > -
> > -typedef struct RedWorkerMessageUpdateAsync {
> > -    RedWorkerMessageAsync base;
> > -    uint32_t surface_id;
> > -    QXLRect qxl_area;
> > -    uint32_t clear_dirty_region;
> > -} RedWorkerMessageUpdateAsync;
> > -
> > -typedef struct RedWorkerMessageAddMemslot {
> > -    QXLDevMemSlot mem_slot;
> > -} RedWorkerMessageAddMemslot;
> > -
> > -typedef struct RedWorkerMessageAddMemslotAsync {
> > -    RedWorkerMessageAsync base;
> > -    QXLDevMemSlot mem_slot;
> > -} RedWorkerMessageAddMemslotAsync;
> > -
> > -typedef struct RedWorkerMessageDelMemslot {
> > -    uint32_t slot_group_id;
> > -    uint32_t slot_id;
> > -} RedWorkerMessageDelMemslot;
> > -
> > -typedef struct RedWorkerMessageDestroySurfaces {
> > -} RedWorkerMessageDestroySurfaces;
> > -
> > -typedef struct RedWorkerMessageDestroySurfacesAsync {
> > -    RedWorkerMessageAsync base;
> > -} RedWorkerMessageDestroySurfacesAsync;
> > -
> > -
> > -typedef struct RedWorkerMessageDestroyPrimarySurface {
> > -    uint32_t surface_id;
> > -} RedWorkerMessageDestroyPrimarySurface;
> > -
> > -typedef struct RedWorkerMessageDestroyPrimarySurfaceAsync {
> > -    RedWorkerMessageAsync base;
> > -    uint32_t surface_id;
> > -} RedWorkerMessageDestroyPrimarySurfaceAsync;
> > -
> > -typedef struct RedWorkerMessageCreatePrimarySurfaceAsync {
> > -    RedWorkerMessageAsync base;
> > -    uint32_t surface_id;
> > -    QXLDevSurfaceCreate surface;
> > -} RedWorkerMessageCreatePrimarySurfaceAsync;
> > -
> > -typedef struct RedWorkerMessageCreatePrimarySurface {
> > -    uint32_t surface_id;
> > -    QXLDevSurfaceCreate surface;
> > -} RedWorkerMessageCreatePrimarySurface;
> > -
> > -typedef struct RedWorkerMessageResetImageCache {
> > -} RedWorkerMessageResetImageCache;
> > -
> > -typedef struct RedWorkerMessageResetCursor {
> > -} RedWorkerMessageResetCursor;
> > -
> > -typedef struct RedWorkerMessageWakeup {
> > -} RedWorkerMessageWakeup;
> > -
> > -typedef struct RedWorkerMessageOom {
> > -} RedWorkerMessageOom;
> > -
> > -typedef struct RedWorkerMessageStart {
> > -} RedWorkerMessageStart;
> > -
> > -typedef struct RedWorkerMessageFlushSurfacesAsync {
> > -    RedWorkerMessageAsync base;
> > -} RedWorkerMessageFlushSurfacesAsync;
> > -
> > -typedef struct RedWorkerMessageStop {
> > -} RedWorkerMessageStop;
> > -
> > -/* this command is sync, so it's ok to pass a pointer */
> > -typedef struct RedWorkerMessageLoadvmCommands {
> > -    uint32_t count;
> > -    QXLCommandExt *ext;
> > -} RedWorkerMessageLoadvmCommands;
> > -
> > -typedef struct RedWorkerMessageSetCompression {
> > -    SpiceImageCompression image_compression;
> > -} RedWorkerMessageSetCompression;
> > -
> > -typedef struct RedWorkerMessageSetStreamingVideo {
> > -    uint32_t streaming_video;
> > -} RedWorkerMessageSetStreamingVideo;
> > -
> > -typedef struct RedWorkerMessageSetVideoCodecs {
> > -    GArray* video_codecs;
> > -} RedWorkerMessageSetVideoCodecs;
> > -
> > -typedef struct RedWorkerMessageSetMouseMode {
> > -    uint32_t mode;
> > -} RedWorkerMessageSetMouseMode;
> > -
> > -typedef struct RedWorkerMessageDisplayChannelCreate {
> > -} RedWorkerMessageDisplayChannelCreate;
> > -
> > -typedef struct RedWorkerMessageCursorChannelCreate {
> > -} RedWorkerMessageCursorChannelCreate;
> > -
> > -typedef struct RedWorkerMessageDestroySurfaceWait {
> > -    uint32_t surface_id;
> > -} RedWorkerMessageDestroySurfaceWait;
> > -
> > -typedef struct RedWorkerMessageDestroySurfaceWaitAsync {
> > -    RedWorkerMessageAsync base;
> > -    uint32_t surface_id;
> > -} RedWorkerMessageDestroySurfaceWaitAsync;
> > -
> > -typedef struct RedWorkerMessageResetMemslots {
> > -} RedWorkerMessageResetMemslots;
> > -
> > -typedef struct RedWorkerMessageMonitorsConfigAsync {
> > -    RedWorkerMessageAsync base;
> > -    QXLPHYSICAL monitors_config;
> > -    int group_id;
> > -    unsigned int max_monitors;
> > -} RedWorkerMessageMonitorsConfigAsync;
> > -
> > -typedef struct RedWorkerMessageDriverUnload {
> > -} RedWorkerMessageDriverUnload;
> > -
> > -typedef struct RedWorkerMessageGlScanout {
> > -} RedWorkerMessageGlScanout;
> > -
> > -typedef struct RedWorkerMessageClose {
> > -} RedWorkerMessageClose;
> > -
> > -typedef struct RedWorkerMessageGlDraw {
> > -    SpiceMsgDisplayGlDraw draw;
> > -} RedWorkerMessageGlDraw;
> > -
> > -enum {
> > -    RED_DISPATCHER_PENDING_WAKEUP,
> > -    RED_DISPATCHER_PENDING_OOM,
> > -};
> > -
> > -void red_qxl_clear_pending(QXLState *qxl_state, int pending);
> > -
> > #endif /* RED_QXL_H_ */
> > diff --git a/server/red-replay-qxl.c b/server/red-replay-qxl.c
> > index 6172ed22..2f31e9cd 100644
> > --- a/server/red-replay-qxl.c
> > +++ b/server/red-replay-qxl.c
> > @@ -26,6 +26,7 @@
> > 
> > #include "reds.h"
> > #include "red-qxl.h"
> > +#include "red-worker.h"
> > #include "red-common.h"
> > #include "memslot.h"
> > #include "red-parse-qxl.h"
> > diff --git a/server/red-worker.h b/server/red-worker.h
> > index 8ec28f14..4f64b729 100644
> > --- a/server/red-worker.h
> > +++ b/server/red-worker.h
> > @@ -15,6 +15,12 @@
> >    License along with this library; if not, see
> >    <http://www.gnu.org/licenses/>.
> > */
> > 
> > +/* This header should contains internal details between RedQxl and
> > + * RedWorker.
> > + * Should be included only by red-worker.c, red-qxl.c and
> > + * red-replay-qxl.c (which uses message values).
> > + */
> > +
> > #ifndef RED_WORKER_H_
> > #define RED_WORKER_H_
> > 
> > @@ -31,4 +37,246 @@ RedWorker* red_worker_new(QXLInstance *qxl,
> > bool       red_worker_run(RedWorker *worker);
> > void red_worker_free(RedWorker *worker);
> > 
> > +void red_qxl_async_complete(QXLInstance *qxl, AsyncCommand
> > *async_command);
> 
> Given that all functions in red-worker.h begin with red-worker, shouldn’t
> that
> be renamed as red_worker_qxl_async_complete? Some for other functions
> you moved here.
> 

I think is better to change names in a follow up patch.

> > +struct Dispatcher *red_qxl_get_dispatcher(QXLInstance *qxl);
> 
> Rename red_worker_.…?
> 

I don't think is a nice idea.

> > +
> > +typedef uint32_t RedWorkerMessage;
> > +
> > +/* Keep message order, only append new messages!
> > + * Replay code store enum values into save files.
> > + */
> > +enum {
> > +    RED_WORKER_MESSAGE_NOP,
> > +
> > +    RED_WORKER_MESSAGE_UPDATE,
> > +    RED_WORKER_MESSAGE_WAKEUP,
> > +    RED_WORKER_MESSAGE_OOM,
> > +    RED_WORKER_MESSAGE_READY, /* unused */
> > +
> > +    RED_WORKER_MESSAGE_DISPLAY_CONNECT,
> > +    RED_WORKER_MESSAGE_DISPLAY_DISCONNECT,
> > +    RED_WORKER_MESSAGE_DISPLAY_MIGRATE,
> > +    RED_WORKER_MESSAGE_START,
> > +    RED_WORKER_MESSAGE_STOP,
> > +    RED_WORKER_MESSAGE_CURSOR_CONNECT,
> > +    RED_WORKER_MESSAGE_CURSOR_DISCONNECT,
> > +    RED_WORKER_MESSAGE_CURSOR_MIGRATE,
> > +    RED_WORKER_MESSAGE_SET_COMPRESSION,
> > +    RED_WORKER_MESSAGE_SET_STREAMING_VIDEO,
> > +    RED_WORKER_MESSAGE_SET_MOUSE_MODE,
> > +    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_RESET_CURSOR,
> > +    RED_WORKER_MESSAGE_RESET_IMAGE_CACHE,
> > +    RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT,
> > +    RED_WORKER_MESSAGE_LOADVM_COMMANDS,
> > +    /* async commands */
> > +    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_DESTROY_PRIMARY_SURFACE_ASYNC,
> > +    RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC,
> > +    /* suspend/windows resolution change command */
> > +    RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC,
> > +
> > +    RED_WORKER_MESSAGE_DISPLAY_CHANNEL_CREATE, /* unused */
> > +    RED_WORKER_MESSAGE_CURSOR_CHANNEL_CREATE, /* unused */
> > +
> > +    RED_WORKER_MESSAGE_MONITORS_CONFIG_ASYNC,
> > +    RED_WORKER_MESSAGE_DRIVER_UNLOAD,
> > +    RED_WORKER_MESSAGE_GL_SCANOUT,
> > +    RED_WORKER_MESSAGE_GL_DRAW_ASYNC,
> > +    RED_WORKER_MESSAGE_SET_VIDEO_CODECS,
> > +
> > +    /* close worker thread */
> > +    RED_WORKER_MESSAGE_CLOSE_WORKER,
> > +
> > +    RED_WORKER_MESSAGE_COUNT // LAST
> > +};
> > +
> > +typedef struct RedWorkerMessageDisplayConnect {
> > +    RedClient * client;
> > +    RedsStream * stream;
> > +    RedChannelCapabilities caps;   // red_worker should reset
> > +    int migration;
> > +} RedWorkerMessageDisplayConnect;
> > +
> > +typedef struct RedWorkerMessageDisplayDisconnect {
> > +    RedChannelClient *rcc;
> > +} RedWorkerMessageDisplayDisconnect;
> > +
> > +typedef struct RedWorkerMessageDisplayMigrate {
> > +    RedChannelClient *rcc;
> > +} RedWorkerMessageDisplayMigrate;
> > +
> > +typedef struct RedWorkerMessageCursorConnect {
> > +    RedClient *client;
> > +    RedsStream *stream;
> > +    int migration;
> > +    RedChannelCapabilities caps;   // red_worker should reset
> > +} RedWorkerMessageCursorConnect;
> > +
> > +typedef struct RedWorkerMessageCursorDisconnect {
> > +    RedChannelClient *rcc;
> > +} RedWorkerMessageCursorDisconnect;
> > +
> > +typedef struct RedWorkerMessageCursorMigrate {
> > +    RedChannelClient *rcc;
> > +} RedWorkerMessageCursorMigrate;
> > +
> > +typedef struct RedWorkerMessageUpdate {
> > +    uint32_t surface_id;
> > +    QXLRect * qxl_area;
> > +    QXLRect * qxl_dirty_rects;
> > +    uint32_t num_dirty_rects;
> > +    uint32_t clear_dirty_region;
> > +} RedWorkerMessageUpdate;
> > +
> > +typedef struct RedWorkerMessageAsync {
> > +    AsyncCommand *cmd;
> > +} RedWorkerMessageAsync;
> > +
> > +typedef struct RedWorkerMessageUpdateAsync {
> > +    RedWorkerMessageAsync base;
> > +    uint32_t surface_id;
> > +    QXLRect qxl_area;
> > +    uint32_t clear_dirty_region;
> > +} RedWorkerMessageUpdateAsync;
> > +
> > +typedef struct RedWorkerMessageAddMemslot {
> > +    QXLDevMemSlot mem_slot;
> > +} RedWorkerMessageAddMemslot;
> > +
> > +typedef struct RedWorkerMessageAddMemslotAsync {
> > +    RedWorkerMessageAsync base;
> > +    QXLDevMemSlot mem_slot;
> > +} RedWorkerMessageAddMemslotAsync;
> > +
> > +typedef struct RedWorkerMessageDelMemslot {
> > +    uint32_t slot_group_id;
> > +    uint32_t slot_id;
> > +} RedWorkerMessageDelMemslot;
> > +
> > +typedef struct RedWorkerMessageDestroySurfaces {
> > +} RedWorkerMessageDestroySurfaces;
> > +
> > +typedef struct RedWorkerMessageDestroySurfacesAsync {
> > +    RedWorkerMessageAsync base;
> > +} RedWorkerMessageDestroySurfacesAsync;
> > +
> > +
> > +typedef struct RedWorkerMessageDestroyPrimarySurface {
> > +    uint32_t surface_id;
> > +} RedWorkerMessageDestroyPrimarySurface;
> > +
> > +typedef struct RedWorkerMessageDestroyPrimarySurfaceAsync {
> > +    RedWorkerMessageAsync base;
> > +    uint32_t surface_id;
> > +} RedWorkerMessageDestroyPrimarySurfaceAsync;
> > +
> > +typedef struct RedWorkerMessageCreatePrimarySurfaceAsync {
> > +    RedWorkerMessageAsync base;
> > +    uint32_t surface_id;
> > +    QXLDevSurfaceCreate surface;
> > +} RedWorkerMessageCreatePrimarySurfaceAsync;
> > +
> > +typedef struct RedWorkerMessageCreatePrimarySurface {
> > +    uint32_t surface_id;
> > +    QXLDevSurfaceCreate surface;
> > +} RedWorkerMessageCreatePrimarySurface;
> > +
> > +typedef struct RedWorkerMessageResetImageCache {
> > +} RedWorkerMessageResetImageCache;
> > +
> > +typedef struct RedWorkerMessageResetCursor {
> > +} RedWorkerMessageResetCursor;
> > +
> > +typedef struct RedWorkerMessageWakeup {
> > +} RedWorkerMessageWakeup;
> > +
> > +typedef struct RedWorkerMessageOom {
> > +} RedWorkerMessageOom;
> > +
> > +typedef struct RedWorkerMessageStart {
> > +} RedWorkerMessageStart;
> > +
> > +typedef struct RedWorkerMessageFlushSurfacesAsync {
> > +    RedWorkerMessageAsync base;
> > +} RedWorkerMessageFlushSurfacesAsync;
> > +
> > +typedef struct RedWorkerMessageStop {
> > +} RedWorkerMessageStop;
> > +
> > +/* this command is sync, so it's ok to pass a pointer */
> > +typedef struct RedWorkerMessageLoadvmCommands {
> > +    uint32_t count;
> > +    QXLCommandExt *ext;
> > +} RedWorkerMessageLoadvmCommands;
> > +
> > +typedef struct RedWorkerMessageSetCompression {
> > +    SpiceImageCompression image_compression;
> > +} RedWorkerMessageSetCompression;
> > +
> > +typedef struct RedWorkerMessageSetStreamingVideo {
> > +    uint32_t streaming_video;
> > +} RedWorkerMessageSetStreamingVideo;
> > +
> > +typedef struct RedWorkerMessageSetVideoCodecs {
> > +    GArray* video_codecs;
> > +} RedWorkerMessageSetVideoCodecs;
> > +
> > +typedef struct RedWorkerMessageSetMouseMode {
> > +    uint32_t mode;
> > +} RedWorkerMessageSetMouseMode;
> > +
> > +typedef struct RedWorkerMessageDisplayChannelCreate {
> > +} RedWorkerMessageDisplayChannelCreate;
> > +
> > +typedef struct RedWorkerMessageCursorChannelCreate {
> > +} RedWorkerMessageCursorChannelCreate;
> > +
> > +typedef struct RedWorkerMessageDestroySurfaceWait {
> > +    uint32_t surface_id;
> > +} RedWorkerMessageDestroySurfaceWait;
> > +
> > +typedef struct RedWorkerMessageDestroySurfaceWaitAsync {
> > +    RedWorkerMessageAsync base;
> > +    uint32_t surface_id;
> > +} RedWorkerMessageDestroySurfaceWaitAsync;
> > +
> > +typedef struct RedWorkerMessageResetMemslots {
> > +} RedWorkerMessageResetMemslots;
> > +
> > +typedef struct RedWorkerMessageMonitorsConfigAsync {
> > +    RedWorkerMessageAsync base;
> > +    QXLPHYSICAL monitors_config;
> > +    int group_id;
> > +    unsigned int max_monitors;
> > +} RedWorkerMessageMonitorsConfigAsync;
> > +
> > +typedef struct RedWorkerMessageDriverUnload {
> > +} RedWorkerMessageDriverUnload;
> > +
> > +typedef struct RedWorkerMessageGlScanout {
> > +} RedWorkerMessageGlScanout;
> > +
> > +typedef struct RedWorkerMessageClose {
> > +} RedWorkerMessageClose;
> > +
> > +typedef struct RedWorkerMessageGlDraw {
> > +    SpiceMsgDisplayGlDraw draw;
> > +} RedWorkerMessageGlDraw;
> > +
> > +enum {
> > +    RED_DISPATCHER_PENDING_WAKEUP,
> > +    RED_DISPATCHER_PENDING_OOM,
> > +};
> 
> Those probably don’t need renaming, since “dispatcher” is a concept
> that I believe is naturally associated with “worker”. Your call.
> 

Yes, dispatcher maybe is weird.

> > +
> > +void red_qxl_clear_pending(QXLState *qxl_state, int pending);
> 
> Rename red_worker_.…?
> 

I think red_qxl_ here is the right one.

> > +
> > #endif /* RED_WORKER_H_ */

Frediano


More information about the Spice-devel mailing list