summaryrefslogtreecommitdiffstats
path: root/server/red_worker.h
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2011-10-31 17:35:30 +0200
committerAlon Levy <alevy@redhat.com>2011-11-08 16:23:10 +0200
commit8e049ce3b03c5e0034702d2a4b49b7ca36aaff92 (patch)
treed4f2032d649bcfb2c053f1808a0cf01ab4c5db51 /server/red_worker.h
parentca5776f40e60f5bf5c0bf19c242492c2082d3dfc (diff)
downloadspice-8e049ce3b03c5e0034702d2a4b49b7ca36aaff92.tar.gz
spice-8e049ce3b03c5e0034702d2a4b49b7ca36aaff92.tar.xz
spice-8e049ce3b03c5e0034702d2a4b49b7ca36aaff92.zip
server/red_worker: reuse dispatcher
This patch reuses Dispatcher in RedDispatcher. It adds two helpers to red_worker to keep RedWorker opaque to the outside. The dispatcher is abused in three places that use the underlying socket directly: once sending a READY after red_init completes once for each channel creation, replying with the RedChannel instance for cursor and display. FDO Bugzilla: 42463 rfc->v1: * move callbacks to red_worker.c including registration (Yonit) * rename dispatcher to red_dispatcher in red_worker.c and red_dispatcher.c * add accessor red_dispatcher_get_dispatcher * s/dispatcher_handle_recv/dispatcher_handle_recv_read/ and change sig to just Dispatcher *dispatcher (was the SpiceCoreInterface one) * remove SpiceCoreInterface parameter from dispatcher_init (Yonit) * main_dispatcher needed it for channel_event so it has it in struct MainDispatcher * add dispatcher_get_recv_fd for red_worker
Diffstat (limited to 'server/red_worker.h')
-rw-r--r--server/red_worker.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/server/red_worker.h b/server/red_worker.h
index 26c43adb..08c7b223 100644
--- a/server/red_worker.h
+++ b/server/red_worker.h
@@ -84,6 +84,8 @@ enum {
RED_WORKER_MESSAGE_DISPLAY_CHANNEL_CREATE,
RED_WORKER_MESSAGE_CURSOR_CHANNEL_CREATE,
+
+ RED_WORKER_MESSAGE_COUNT // LAST
};
typedef uint32_t RedWorkerMessage;
@@ -102,7 +104,6 @@ typedef struct RedDispatcher RedDispatcher;
typedef struct WorkerInitData {
struct QXLInstance *qxl;
int id;
- int channel;
uint32_t *pending;
uint32_t num_renderers;
uint32_t renderers[RED_MAX_RENDERERS];
@@ -116,7 +117,7 @@ typedef struct WorkerInitData {
uint8_t memslot_id_bits;
uint8_t internal_groupslot_id;
uint32_t n_surfaces;
- RedDispatcher *dispatcher;
+ RedDispatcher *red_dispatcher;
} WorkerInitData;
void *red_worker_main(void *arg);