summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2012-06-06 11:47:25 +0300
committerJonathon Jongsma <jjongsma@redhat.com>2015-01-09 14:21:13 -0600
commitb3b499c5eb1ca211f0ec10f03ef2ebe230e3970a (patch)
tree94151c7d45518edbfa23e547872d574ec2ac9e45
parent6a6dc2836198a4e514140d084e377d5f0b599c7f (diff)
downloadspice-b3b499c5eb1ca211f0ec10f03ef2ebe230e3970a.tar.gz
spice-b3b499c5eb1ca211f0ec10f03ef2ebe230e3970a.tar.xz
spice-b3b499c5eb1ca211f0ec10f03ef2ebe230e3970a.zip
server/dispatcher: pass message_type to callbacks for consistency
-rw-r--r--server/dispatcher.c2
-rw-r--r--server/dispatcher.h1
-rw-r--r--server/main_dispatcher.c4
-rw-r--r--server/red_worker.c74
4 files changed, 44 insertions, 37 deletions
diff --git a/server/dispatcher.c b/server/dispatcher.c
index 298f5f90..ad9726b2 100644
--- a/server/dispatcher.c
+++ b/server/dispatcher.c
@@ -136,7 +136,7 @@ static int dispatcher_handle_single_read(Dispatcher *dispatcher)
return 0;
}
if (msg->handler) {
- msg->handler(dispatcher->opaque, (void *)payload);
+ msg->handler(dispatcher->opaque, type, (void *)payload);
} else {
spice_printerr("error: no handler for message type %d", type);
}
diff --git a/server/dispatcher.h b/server/dispatcher.h
index 1b389bde..85cbd26a 100644
--- a/server/dispatcher.h
+++ b/server/dispatcher.h
@@ -6,6 +6,7 @@
typedef struct Dispatcher Dispatcher;
typedef void (*dispatcher_handle_message)(void *opaque,
+ uint32_t message_type,
void *payload);
typedef void (*dispatcher_handle_async_done)(void *opaque,
diff --git a/server/main_dispatcher.c b/server/main_dispatcher.c
index dbe10374..ad81e424 100644
--- a/server/main_dispatcher.c
+++ b/server/main_dispatcher.c
@@ -73,6 +73,7 @@ static void main_dispatcher_self_handle_channel_event(
}
static void main_dispatcher_handle_channel_event(void *opaque,
+ uint32_t message_type,
void *payload)
{
MainDispatcherChannelEventMessage *channel_event = payload;
@@ -97,6 +98,7 @@ void main_dispatcher_channel_event(int event, SpiceChannelEventInfo *info)
static void main_dispatcher_handle_migrate_complete(void *opaque,
+ uint32_t message_type,
void *payload)
{
MainDispatcherMigrateSeamlessDstCompleteMessage *mig_complete = payload;
@@ -106,6 +108,7 @@ static void main_dispatcher_handle_migrate_complete(void *opaque,
}
static void main_dispatcher_handle_mm_time_latency(void *opaque,
+ uint32_t message_type,
void *payload)
{
MainDispatcherMmTimeLatencyMessage *msg = payload;
@@ -114,6 +117,7 @@ static void main_dispatcher_handle_mm_time_latency(void *opaque,
}
static void main_dispatcher_handle_client_disconnect(void *opaque,
+ uint32_t message_type,
void *payload)
{
MainDispatcherClientDisconnectMessage *msg = payload;
diff --git a/server/red_worker.c b/server/red_worker.c
index d1465ff9..2d6defb7 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -11018,7 +11018,7 @@ static void surface_dirty_region_to_rects(RedSurface *surface,
free(dirty_rects);
}
-void handle_dev_update_async(void *opaque, void *payload)
+void handle_dev_update_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
RedWorkerMessageUpdateAsync *msg = payload;
@@ -11053,7 +11053,7 @@ void handle_dev_update_async(void *opaque, void *payload)
free(qxl_dirty_rects);
}
-void handle_dev_update(void *opaque, void *payload)
+void handle_dev_update(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
RedWorkerMessageUpdate *msg = payload;
@@ -11089,7 +11089,7 @@ static void dev_add_memslot(RedWorker *worker, QXLDevMemSlot mem_slot)
mem_slot.generation);
}
-void handle_dev_add_memslot(void *opaque, void *payload)
+void handle_dev_add_memslot(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
RedWorkerMessageAddMemslot *msg = payload;
@@ -11100,7 +11100,7 @@ void handle_dev_add_memslot(void *opaque, void *payload)
mem_slot.generation);
}
-void handle_dev_del_memslot(void *opaque, void *payload)
+void handle_dev_del_memslot(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
RedWorkerMessageDelMemslot *msg = payload;
@@ -11137,7 +11137,7 @@ static void dev_destroy_surface_wait(RedWorker *worker, uint32_t surface_id)
}
}
-void handle_dev_destroy_surface_wait(void *opaque, void *payload)
+void handle_dev_destroy_surface_wait(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDestroySurfaceWait *msg = payload;
RedWorker *worker = opaque;
@@ -11212,7 +11212,7 @@ static inline void dev_destroy_surfaces(RedWorker *worker)
red_cursor_reset(worker);
}
-void handle_dev_destroy_surfaces(void *opaque, void *payload)
+void handle_dev_destroy_surfaces(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11367,7 +11367,7 @@ static void dev_create_primary_surface(RedWorker *worker, uint32_t surface_id,
}
}
-void handle_dev_create_primary_surface(void *opaque, void *payload)
+void handle_dev_create_primary_surface(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageCreatePrimarySurface *msg = payload;
RedWorker *worker = opaque;
@@ -11395,7 +11395,7 @@ static void dev_destroy_primary_surface(RedWorker *worker, uint32_t surface_id)
red_cursor_reset(worker);
}
-void handle_dev_destroy_primary_surface(void *opaque, void *payload)
+void handle_dev_destroy_primary_surface(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDestroyPrimarySurface *msg = payload;
RedWorker *worker = opaque;
@@ -11404,7 +11404,7 @@ void handle_dev_destroy_primary_surface(void *opaque, void *payload)
dev_destroy_primary_surface(worker, surface_id);
}
-void handle_dev_destroy_primary_surface_async(void *opaque, void *payload)
+void handle_dev_destroy_primary_surface_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDestroyPrimarySurfaceAsync *msg = payload;
RedWorker *worker = opaque;
@@ -11430,21 +11430,21 @@ static void dev_flush_surfaces(RedWorker *worker)
flush_all_surfaces(worker);
}
-void handle_dev_flush_surfaces(void *opaque, void *payload)
+void handle_dev_flush_surfaces(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
dev_flush_surfaces(worker);
}
-void handle_dev_flush_surfaces_async(void *opaque, void *payload)
+void handle_dev_flush_surfaces_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
dev_flush_surfaces(worker);
}
-void handle_dev_stop(void *opaque, void *payload)
+void handle_dev_stop(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11501,7 +11501,7 @@ static int display_channel_wait_for_migrate_data(DisplayChannel *display)
return FALSE;
}
-void handle_dev_start(void *opaque, void *payload)
+void handle_dev_start(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11519,7 +11519,7 @@ void handle_dev_start(void *opaque, void *payload)
guest_set_client_capabilities(worker);
}
-void handle_dev_wakeup(void *opaque, void *payload)
+void handle_dev_wakeup(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11527,7 +11527,7 @@ void handle_dev_wakeup(void *opaque, void *payload)
stat_inc_counter(worker->wakeup_counter, 1);
}
-void handle_dev_oom(void *opaque, void *payload)
+void handle_dev_oom(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11560,17 +11560,17 @@ void handle_dev_oom(void *opaque, void *payload)
clear_bit(RED_WORKER_PENDING_OOM, worker->pending);
}
-void handle_dev_reset_cursor(void *opaque, void *payload)
+void handle_dev_reset_cursor(void *opaque, uint32_t message_type, void *payload)
{
red_cursor_reset((RedWorker *)opaque);
}
-void handle_dev_reset_image_cache(void *opaque, void *payload)
+void handle_dev_reset_image_cache(void *opaque, uint32_t message_type, void *payload)
{
image_cache_reset(&((RedWorker *)opaque)->image_cache);
}
-void handle_dev_destroy_surface_wait_async(void *opaque, void *payload)
+void handle_dev_destroy_surface_wait_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDestroySurfaceWaitAsync *msg = payload;
RedWorker *worker = opaque;
@@ -11578,14 +11578,14 @@ void handle_dev_destroy_surface_wait_async(void *opaque, void *payload)
dev_destroy_surface_wait(worker, msg->surface_id);
}
-void handle_dev_destroy_surfaces_async(void *opaque, void *payload)
+void handle_dev_destroy_surfaces_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
dev_destroy_surfaces(worker);
}
-void handle_dev_create_primary_surface_async(void *opaque, void *payload)
+void handle_dev_create_primary_surface_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageCreatePrimarySurfaceAsync *msg = payload;
RedWorker *worker = opaque;
@@ -11599,7 +11599,7 @@ void handle_dev_create_primary_surface_async(void *opaque, void *payload)
* pthread is created, since the channel duration is the lifetime of the spice
* server. */
-void handle_dev_display_channel_create(void *opaque, void *payload)
+void handle_dev_display_channel_create(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11610,7 +11610,7 @@ void handle_dev_display_channel_create(void *opaque, void *payload)
xwrite(worker->channel, &red_channel, sizeof(RedChannel *));
}
-void handle_dev_display_connect(void *opaque, void *payload)
+void handle_dev_display_connect(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDisplayConnect *msg = payload;
RedWorker *worker = opaque;
@@ -11626,7 +11626,7 @@ void handle_dev_display_connect(void *opaque, void *payload)
free(msg->common_caps);
}
-void handle_dev_display_disconnect(void *opaque, void *payload)
+void handle_dev_display_disconnect(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDisplayDisconnect *msg = payload;
RedChannelClient *rcc = msg->rcc;
@@ -11640,7 +11640,7 @@ void handle_dev_display_disconnect(void *opaque, void *payload)
red_channel_client_disconnect(rcc);
}
-void handle_dev_display_migrate(void *opaque, void *payload)
+void handle_dev_display_migrate(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageDisplayMigrate *msg = payload;
RedWorker *worker = opaque;
@@ -11651,7 +11651,9 @@ void handle_dev_display_migrate(void *opaque, void *payload)
red_migrate_display(worker, rcc);
}
-static void handle_dev_monitors_config_async(void *opaque, void *payload)
+static void handle_dev_monitors_config_async(void *opaque,
+ uint32_t message_type,
+ void *payload)
{
RedWorkerMessageMonitorsConfigAsync *msg = payload;
RedWorker *worker = opaque;
@@ -11682,7 +11684,7 @@ static void handle_dev_monitors_config_async(void *opaque, void *payload)
}
/* TODO: special, perhaps use another dispatcher? */
-void handle_dev_cursor_channel_create(void *opaque, void *payload)
+void handle_dev_cursor_channel_create(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
RedChannel *red_channel;
@@ -11693,7 +11695,7 @@ void handle_dev_cursor_channel_create(void *opaque, void *payload)
xwrite(worker->channel, &red_channel, sizeof(RedChannel *));
}
-void handle_dev_cursor_connect(void *opaque, void *payload)
+void handle_dev_cursor_connect(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageCursorConnect *msg = payload;
RedWorker *worker = opaque;
@@ -11709,7 +11711,7 @@ void handle_dev_cursor_connect(void *opaque, void *payload)
free(msg->common_caps);
}
-void handle_dev_cursor_disconnect(void *opaque, void *payload)
+void handle_dev_cursor_disconnect(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageCursorDisconnect *msg = payload;
RedChannelClient *rcc = msg->rcc;
@@ -11719,7 +11721,7 @@ void handle_dev_cursor_disconnect(void *opaque, void *payload)
red_channel_client_disconnect(rcc);
}
-void handle_dev_cursor_migrate(void *opaque, void *payload)
+void handle_dev_cursor_migrate(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageCursorMigrate *msg = payload;
RedWorker *worker = opaque;
@@ -11730,7 +11732,7 @@ void handle_dev_cursor_migrate(void *opaque, void *payload)
red_migrate_cursor(worker, rcc);
}
-void handle_dev_set_compression(void *opaque, void *payload)
+void handle_dev_set_compression(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageSetCompression *msg = payload;
RedWorker *worker = opaque;
@@ -11777,7 +11779,7 @@ void handle_dev_set_compression(void *opaque, void *payload)
#endif
}
-void handle_dev_set_streaming_video(void *opaque, void *payload)
+void handle_dev_set_streaming_video(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageSetStreamingVideo *msg = payload;
RedWorker *worker = opaque;
@@ -11799,7 +11801,7 @@ void handle_dev_set_streaming_video(void *opaque, void *payload)
}
}
-void handle_dev_set_mouse_mode(void *opaque, void *payload)
+void handle_dev_set_mouse_mode(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageSetMouseMode *msg = payload;
RedWorker *worker = opaque;
@@ -11808,7 +11810,7 @@ void handle_dev_set_mouse_mode(void *opaque, void *payload)
spice_info("mouse mode %u", worker->mouse_mode);
}
-void handle_dev_add_memslot_async(void *opaque, void *payload)
+void handle_dev_add_memslot_async(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageAddMemslotAsync *msg = payload;
RedWorker *worker = opaque;
@@ -11816,14 +11818,14 @@ void handle_dev_add_memslot_async(void *opaque, void *payload)
dev_add_memslot(worker, msg->mem_slot);
}
-void handle_dev_reset_memslots(void *opaque, void *payload)
+void handle_dev_reset_memslots(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
red_memslot_info_reset(&worker->mem_slots);
}
-void handle_dev_driver_unload(void *opaque, void *payload)
+void handle_dev_driver_unload(void *opaque, uint32_t message_type, void *payload)
{
RedWorker *worker = opaque;
@@ -11859,7 +11861,7 @@ static int loadvm_command(RedWorker *worker, QXLCommandExt *ext)
return TRUE;
}
-void handle_dev_loadvm_commands(void *opaque, void *payload)
+void handle_dev_loadvm_commands(void *opaque, uint32_t message_type, void *payload)
{
RedWorkerMessageLoadvmCommands *msg = payload;
RedWorker *worker = opaque;