spice-qxl: Remove QXLWorker definition

It was made obsolete more than 6 years ago by

  commit fe0941fb02
  Author: Marc-André Lureau <marcandre.lureau@gmail.com>
  Date:   Thu Oct 3 22:52:38 2013 +0200

      server: mark deprecated symbols

For compatibility with spice_replay_next_cmd pass a QXLInstance
pointer. For more information see comment on
red-qxl.c:red_qxl_attach_worker.

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
This commit is contained in:
Frediano Ziglio 2020-03-16 02:51:22 +00:00
parent 2f130edfdd
commit 6aa1a17c69
6 changed files with 23 additions and 155 deletions

View File

@ -42,7 +42,6 @@
#define MAX_MONITORS_COUNT 16
struct QXLState {
QXLWorker qxl_worker;
QXLInstance *qxl;
Dispatcher *dispatcher;
uint32_t pending;
@ -129,15 +128,6 @@ static void red_qxl_update_area_async(QXLState *qxl_state,
&payload);
}
static void qxl_worker_update_area(QXLWorker *qxl_worker, uint32_t surface_id,
QXLRect *qxl_area, QXLRect *qxl_dirty_rects,
uint32_t num_dirty_rects, uint32_t clear_dirty_region)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_update_area(qxl_state, surface_id, qxl_area,
qxl_dirty_rects, num_dirty_rects, clear_dirty_region);
}
static void red_qxl_add_memslot(QXLState *qxl_state, QXLDevMemSlot *mem_slot)
{
RedWorkerMessageAddMemslot payload;
@ -148,12 +138,6 @@ static void red_qxl_add_memslot(QXLState *qxl_state, QXLDevMemSlot *mem_slot)
&payload);
}
static void qxl_worker_add_memslot(QXLWorker *qxl_worker, QXLDevMemSlot *mem_slot)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_add_memslot(qxl_state, mem_slot);
}
static void red_qxl_add_memslot_async(QXLState *qxl_state, QXLDevMemSlot *mem_slot, uint64_t cookie)
{
RedWorkerMessageAddMemslotAsync payload;
@ -174,12 +158,6 @@ static void red_qxl_del_memslot(QXLState *qxl_state, uint32_t slot_group_id, uin
dispatcher_send_message(qxl_state->dispatcher, message, &payload);
}
static void qxl_worker_del_memslot(QXLWorker *qxl_worker, uint32_t slot_group_id, uint32_t slot_id)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_del_memslot(qxl_state, slot_group_id, slot_id);
}
static void red_qxl_destroy_surfaces(QXLState *qxl_state)
{
RedWorkerMessageDestroySurfaces payload;
@ -189,12 +167,6 @@ static void red_qxl_destroy_surfaces(QXLState *qxl_state)
&payload);
}
static void qxl_worker_destroy_surfaces(QXLWorker *qxl_worker)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_destroy_surfaces(qxl_state);
}
static void red_qxl_destroy_surfaces_async(QXLState *qxl_state, uint64_t cookie)
{
RedWorkerMessageDestroySurfacesAsync payload;
@ -250,12 +222,6 @@ red_qxl_destroy_primary_surface(QXLState *qxl_state,
}
}
static void qxl_worker_destroy_primary_surface(QXLWorker *qxl_worker, uint32_t surface_id)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_destroy_primary_surface(qxl_state, surface_id, 0, 0);
}
/* used by RedWorker */
void red_qxl_create_primary_surface_complete(QXLState *qxl_state, const QXLDevSurfaceCreate *surface)
{
@ -295,13 +261,6 @@ red_qxl_create_primary_surface_sync(QXLState *qxl_state, uint32_t surface_id,
red_qxl_create_primary_surface_complete(qxl_state, surface);
}
static void qxl_worker_create_primary_surface(QXLWorker *qxl_worker, uint32_t surface_id,
QXLDevSurfaceCreate *surface)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_create_primary_surface_sync(qxl_state, surface_id, surface);
}
static void red_qxl_reset_image_cache(QXLState *qxl_state)
{
RedWorkerMessageResetImageCache payload;
@ -311,12 +270,6 @@ static void red_qxl_reset_image_cache(QXLState *qxl_state)
&payload);
}
static void qxl_worker_reset_image_cache(QXLWorker *qxl_worker)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_reset_image_cache(qxl_state);
}
static void red_qxl_reset_cursor(QXLState *qxl_state)
{
RedWorkerMessageResetCursor payload;
@ -326,12 +279,6 @@ static void red_qxl_reset_cursor(QXLState *qxl_state)
&payload);
}
static void qxl_worker_reset_cursor(QXLWorker *qxl_worker)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_reset_cursor(qxl_state);
}
static void red_qxl_destroy_surface_wait_sync(QXLState *qxl_state,
uint32_t surface_id)
{
@ -355,12 +302,6 @@ static void red_qxl_destroy_surface_wait_async(QXLState *qxl_state,
dispatcher_send_message(qxl_state->dispatcher, message, &payload);
}
static void qxl_worker_destroy_surface_wait(QXLWorker *qxl_worker, uint32_t surface_id)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_destroy_surface_wait_sync(qxl_state, surface_id);
}
static void red_qxl_reset_memslots(QXLState *qxl_state)
{
RedWorkerMessageResetMemslots payload;
@ -370,12 +311,6 @@ static void red_qxl_reset_memslots(QXLState *qxl_state)
&payload);
}
static void qxl_worker_reset_memslots(QXLWorker *qxl_worker)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_reset_memslots(qxl_state);
}
static bool red_qxl_set_pending(QXLState *qxl_state, int pending)
{
// this is not atomic but is not an issue
@ -399,12 +334,6 @@ static void red_qxl_wakeup(QXLState *qxl_state)
&payload);
}
static void qxl_worker_wakeup(QXLWorker *qxl_worker)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_wakeup(qxl_state);
}
static void red_qxl_oom(QXLState *qxl_state)
{
RedWorkerMessageOom payload;
@ -417,12 +346,6 @@ static void red_qxl_oom(QXLState *qxl_state)
&payload);
}
static void qxl_worker_oom(QXLWorker *qxl_worker)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_oom(qxl_state);
}
void red_qxl_start(QXLInstance *qxl)
{
RedWorkerMessageStart payload;
@ -432,12 +355,6 @@ void red_qxl_start(QXLInstance *qxl)
&payload);
}
static void qxl_worker_start(QXLWorker *qxl_worker)
{
QXLState *state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_start(state->qxl);
}
static void red_qxl_flush_surfaces_async(QXLState *qxl_state, uint64_t cookie)
{
RedWorkerMessageFlushSurfacesAsync payload;
@ -481,12 +398,6 @@ void red_qxl_stop(QXLInstance *qxl)
&payload);
}
static void qxl_worker_stop(QXLWorker *qxl_worker)
{
QXLState *state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_stop(state->qxl);
}
static void red_qxl_loadvm_commands(QXLState *qxl_state,
struct QXLCommandExt *ext,
uint32_t count)
@ -500,14 +411,6 @@ static void red_qxl_loadvm_commands(QXLState *qxl_state,
&payload);
}
static void qxl_worker_loadvm_commands(QXLWorker *qxl_worker,
struct QXLCommandExt *ext,
uint32_t count)
{
QXLState *qxl_state = SPICE_CONTAINEROF(qxl_worker, QXLState, qxl_worker);
red_qxl_loadvm_commands(qxl_state, ext, count);
}
uint32_t red_qxl_get_ram_size(QXLInstance *qxl)
{
QXLDevInitInfo qxl_info;
@ -848,24 +751,6 @@ void red_qxl_init(RedsState *reds, QXLInstance *qxl)
qxl_state->scanout.drm_dma_buf_fd = -1;
qxl_state->gl_draw_cookie = GL_DRAW_COOKIE_INVALID;
qxl_state->dispatcher = dispatcher_new(RED_WORKER_MESSAGE_COUNT);
qxl_state->qxl_worker.major_version = SPICE_INTERFACE_QXL_MAJOR;
qxl_state->qxl_worker.minor_version = SPICE_INTERFACE_QXL_MINOR;
qxl_state->qxl_worker.wakeup = qxl_worker_wakeup;
qxl_state->qxl_worker.oom = qxl_worker_oom;
qxl_state->qxl_worker.start = qxl_worker_start;
qxl_state->qxl_worker.stop = qxl_worker_stop;
qxl_state->qxl_worker.update_area = qxl_worker_update_area;
qxl_state->qxl_worker.add_memslot = qxl_worker_add_memslot;
qxl_state->qxl_worker.del_memslot = qxl_worker_del_memslot;
qxl_state->qxl_worker.reset_memslots = qxl_worker_reset_memslots;
qxl_state->qxl_worker.destroy_surfaces = qxl_worker_destroy_surfaces;
qxl_state->qxl_worker.create_primary_surface = qxl_worker_create_primary_surface;
qxl_state->qxl_worker.destroy_primary_surface = qxl_worker_destroy_primary_surface;
qxl_state->qxl_worker.reset_image_cache = qxl_worker_reset_image_cache;
qxl_state->qxl_worker.reset_cursor = qxl_worker_reset_cursor;
qxl_state->qxl_worker.destroy_surface_wait = qxl_worker_destroy_surface_wait;
qxl_state->qxl_worker.loadvm_commands = qxl_worker_loadvm_commands;
qxl_state->max_monitors = UINT_MAX;
qxl->st = qxl_state;
@ -975,7 +860,16 @@ RedsState* red_qxl_get_server(QXLState *qxl_state)
void red_qxl_attach_worker(QXLInstance *qxl)
{
QXLInterface *qxl_interface = qxl_get_interface(qxl);
qxl_interface->attache_worker(qxl, &qxl->st->qxl_worker);
/* cast for compatibility with spice_replay_next_cmd
* In the past spice_replay_next_cmd received a QXLWorker instead of
* a QXLInstance. Users of this function could have retrieved this pointer
* only by attache_worker callback but this structure was all deprecated.
* Passing QXLInstance pointer instead allows these programs to keep working
* although spice_replay_next_cmd declaration changed */
if (qxl_interface->attache_worker) {
qxl_interface->attache_worker(qxl, (QXLWorker *) qxl);
}
}
void red_qxl_set_compression_level(QXLInstance *qxl, int level)

View File

@ -1247,7 +1247,7 @@ static void red_replay_cursor_cmd_free(SpiceReplay *replay, QXLCursorCmd *qxl)
g_free(qxl);
}
static void replay_handle_create_primary(QXLWorker *worker, SpiceReplay *replay)
static void replay_handle_create_primary(QXLInstance *instance, SpiceReplay *replay)
{
QXLDevSurfaceCreate surface = { 0, };
size_t size;
@ -1256,7 +1256,7 @@ static void replay_handle_create_primary(QXLWorker *worker, SpiceReplay *replay)
if (replay->created_primary) {
g_warning("WARNING: %d: original recording event not preceded by a destroy primary",
replay->counter);
worker->destroy_primary_surface(worker, 0);
spice_qxl_destroy_primary_surface(instance, 0);
}
replay->created_primary = TRUE;
@ -1273,26 +1273,26 @@ static void replay_handle_create_primary(QXLWorker *worker, SpiceReplay *replay)
replay->allocated = g_list_remove(replay->allocated, mem);
replay->primary_mem = mem;
surface.mem = QXLPHYSICAL_FROM_PTR(mem);
worker->create_primary_surface(worker, 0, &surface);
spice_qxl_create_primary_surface(instance, 0, &surface);
}
static void replay_handle_dev_input(QXLWorker *worker, SpiceReplay *replay,
static void replay_handle_dev_input(QXLInstance *instance, SpiceReplay *replay,
RedWorkerMessage message)
{
switch (message) {
case RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE:
case RED_WORKER_MESSAGE_CREATE_PRIMARY_SURFACE_ASYNC:
replay_handle_create_primary(worker, replay);
replay_handle_create_primary(instance, replay);
break;
case RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE:
replay->created_primary = FALSE;
worker->destroy_primary_surface(worker, 0);
spice_qxl_destroy_primary_surface(instance, 0);
g_free(replay->primary_mem);
replay->primary_mem = NULL;
break;
case RED_WORKER_MESSAGE_DESTROY_SURFACES:
replay->created_primary = FALSE;
worker->destroy_surfaces(worker);
spice_qxl_destroy_surfaces(instance);
break;
case RED_WORKER_MESSAGE_UPDATE:
// XXX do anything? we record the correct bitmaps already.
@ -1311,7 +1311,7 @@ static void replay_handle_dev_input(QXLWorker *worker, SpiceReplay *replay,
* since it will block reading from the dispatcher pipe.
*/
SPICE_GNUC_VISIBLE QXLCommandExt* spice_replay_next_cmd(SpiceReplay *replay,
QXLWorker *worker)
QXLInstance *instance)
{
QXLCommandExt* cmd = NULL;
uint64_t timestamp;
@ -1326,7 +1326,7 @@ SPICE_GNUC_VISIBLE QXLCommandExt* spice_replay_next_cmd(SpiceReplay *replay,
goto error;
}
if (what == 1) {
replay_handle_dev_input(worker, replay, type);
replay_handle_dev_input(instance, replay, type);
}
}
cmd = replay_malloc0(replay, sizeof(QXLCommandExt));

View File

@ -41,30 +41,6 @@ typedef struct QXLWorker QXLWorker;
typedef struct QXLDevMemSlot QXLDevMemSlot;
typedef struct QXLDevSurfaceCreate QXLDevSurfaceCreate;
struct QXLWorker {
uint32_t minor_version;
uint32_t major_version;
/* These calls are deprecated. Please use the spice_qxl_* calls instead */
void (*wakeup)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*oom)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*start)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*stop)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*update_area)(QXLWorker *qxl_worker, uint32_t surface_id,
struct QXLRect *area, struct QXLRect *dirty_rects,
uint32_t num_dirty_rects, uint32_t clear_dirty_region) SPICE_GNUC_DEPRECATED;
void (*add_memslot)(QXLWorker *worker, QXLDevMemSlot *slot) SPICE_GNUC_DEPRECATED;
void (*del_memslot)(QXLWorker *worker, uint32_t slot_group_id, uint32_t slot_id) SPICE_GNUC_DEPRECATED;
void (*reset_memslots)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*destroy_surfaces)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*destroy_primary_surface)(QXLWorker *worker, uint32_t surface_id) SPICE_GNUC_DEPRECATED;
void (*create_primary_surface)(QXLWorker *worker, uint32_t surface_id,
QXLDevSurfaceCreate *surface) SPICE_GNUC_DEPRECATED;
void (*reset_image_cache)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*reset_cursor)(QXLWorker *worker) SPICE_GNUC_DEPRECATED;
void (*destroy_surface_wait)(QXLWorker *worker, uint32_t surface_id) SPICE_GNUC_DEPRECATED;
void (*loadvm_commands)(QXLWorker *worker, struct QXLCommandExt *ext, uint32_t count) SPICE_GNUC_DEPRECATED;
};
void spice_qxl_wakeup(QXLInstance *instance);
void spice_qxl_oom(QXLInstance *instance);
/* deprecated since 0.11.2, spice_server_vm_start replaces it */

View File

@ -30,7 +30,7 @@ typedef struct SpiceReplay SpiceReplay;
/* reads until encountering a cmd, processing any recorded messages (io) on the
* way */
QXLCommandExt* spice_replay_next_cmd(SpiceReplay *replay, QXLWorker *worker);
QXLCommandExt* spice_replay_next_cmd(SpiceReplay *replay, QXLInstance *instance);
void spice_replay_free_cmd(SpiceReplay *replay, QXLCommandExt *cmd);
void spice_replay_free(SpiceReplay *replay);
SpiceReplay * spice_replay_new(FILE *file, int nsurfaces);

View File

@ -43,7 +43,6 @@
static SpiceCoreInterface *core;
static SpiceServer *server;
static SpiceReplay *replay;
static QXLWorker *qxl_worker = NULL;
static gboolean started = FALSE;
static QXLInstance display_sin;
static gint slow = 0;
@ -74,7 +73,7 @@ static QXLDevMemSlot slot = {
.qxl_ram_size = ~0,
};
static void attach_worker(QXLInstance *qin, QXLWorker *_qxl_worker)
static void attach_worker(QXLInstance *qin, SPICE_GNUC_UNUSED QXLWorker *_qxl_worker)
{
static int count = 0;
if (++count > 1) {
@ -82,7 +81,6 @@ static void attach_worker(QXLInstance *qin, QXLWorker *_qxl_worker)
return;
}
g_debug("%s\n", __func__);
qxl_worker = _qxl_worker;
spice_qxl_add_memslot(qin, &slot);
spice_server_vm_start(server);
}
@ -112,7 +110,7 @@ static gboolean fill_queue_idle(gpointer user_data)
while ((g_async_queue_length(display_queue) +
g_async_queue_length(cursor_queue)) < 50) {
QXLCommandExt *cmd = spice_replay_next_cmd(replay, qxl_worker);
QXLCommandExt *cmd = spice_replay_next_cmd(replay, &display_sin);
if (!cmd) {
g_async_queue_push(display_queue, GINT_TO_POINTER(-1));
g_async_queue_push(cursor_queue, GINT_TO_POINTER(-1));

View File

@ -423,7 +423,7 @@ static QXLDevMemSlot slot = {
.qxl_ram_size = ~0,
};
static void attache_worker(QXLInstance *qin, QXLWorker *_qxl_worker)
static void attache_worker(QXLInstance *qin, SPICE_GNUC_UNUSED QXLWorker *_qxl_worker)
{
Test *test = SPICE_CONTAINEROF(qin, Test, qxl_instance);