From 2624bab836662d37f08336408a99d97652fc9c4d Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 20 Jun 2012 14:24:28 +0100 Subject: [PATCH] Remove support for non-threaded VNC server QEMU now has a fundamental requirement for pthreads, so there is no compelling reason to retain support for the non-threaded VNC server. Remove the --{enable,disable}-vnc-thread configure arguments, and all CONFIG_VNC_THREAD conditionals Signed-off-by: Daniel P. Berrange Signed-off-by: Anthony Liguori --- configure | 9 ----- ui/Makefile.objs | 6 +-- ui/vnc-jobs-sync.c | 73 ------------------------------------- ui/{vnc-jobs-async.c => vnc-jobs.c} | 0 ui/vnc-jobs.h | 16 -------- ui/vnc.c | 21 ----------- ui/vnc.h | 17 --------- 7 files changed, 1 insertion(+), 141 deletions(-) delete mode 100644 ui/vnc-jobs-sync.c rename ui/{vnc-jobs-async.c => vnc-jobs.c} (100%) diff --git a/configure b/configure index f575279d2b..9f071b7876 100755 --- a/configure +++ b/configure @@ -134,7 +134,6 @@ vnc_tls="" vnc_sasl="" vnc_jpeg="" vnc_png="" -vnc_thread="no" xen="" xen_ctrl_version="" xen_pci_passthrough="" @@ -667,10 +666,6 @@ for opt do ;; --enable-vnc-png) vnc_png="yes" ;; - --disable-vnc-thread) vnc_thread="no" - ;; - --enable-vnc-thread) vnc_thread="yes" - ;; --disable-slirp) slirp="no" ;; --disable-uuid) uuid="no" @@ -3024,7 +3019,6 @@ if test "$vnc" = "yes" ; then echo "VNC SASL support $vnc_sasl" echo "VNC JPEG support $vnc_jpeg" echo "VNC PNG support $vnc_png" - echo "VNC thread $vnc_thread" fi if test -n "$sparc_cpu"; then echo "Target Sparc Arch $sparc_cpu" @@ -3200,9 +3194,6 @@ if test "$vnc_png" = "yes" ; then echo "CONFIG_VNC_PNG=y" >> $config_host_mak echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak fi -if test "$vnc_thread" = "yes" ; then - echo "CONFIG_VNC_THREAD=y" >> $config_host_mak -fi if test "$fnmatch" = "yes" ; then echo "CONFIG_FNMATCH=y" >> $config_host_mak fi diff --git a/ui/Makefile.objs b/ui/Makefile.objs index 3687c8a518..adc07be761 100644 --- a/ui/Makefile.objs +++ b/ui/Makefile.objs @@ -4,11 +4,7 @@ vnc-obj-y += vnc-enc-tight.o vnc-palette.o vnc-obj-y += vnc-enc-zrle.o vnc-obj-$(CONFIG_VNC_TLS) += vnc-tls.o vnc-auth-vencrypt.o vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o -ifdef CONFIG_VNC_THREAD -vnc-obj-y += vnc-jobs-async.o -else -vnc-obj-y += vnc-jobs-sync.o -endif +vnc-obj-y += vnc-jobs.o common-obj-y += keymaps.o common-obj-$(CONFIG_SPICE) += spice-core.o spice-input.o spice-display.o diff --git a/ui/vnc-jobs-sync.c b/ui/vnc-jobs-sync.c deleted file mode 100644 index 49b77afcc9..0000000000 --- a/ui/vnc-jobs-sync.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * QEMU VNC display driver - * - * Copyright (C) 2006 Anthony Liguori - * Copyright (C) 2006 Fabrice Bellard - * Copyright (C) 2009 Red Hat, Inc - * Copyright (C) 2010 Corentin Chary - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "vnc.h" -#include "vnc-jobs.h" - -void vnc_jobs_clear(VncState *vs) -{ -} - -void vnc_jobs_join(VncState *vs) -{ -} - -VncJob *vnc_job_new(VncState *vs) -{ - vs->job.vs = vs; - vs->job.rectangles = 0; - - vnc_write_u8(vs, VNC_MSG_SERVER_FRAMEBUFFER_UPDATE); - vnc_write_u8(vs, 0); - vs->job.saved_offset = vs->output.offset; - vnc_write_u16(vs, 0); - return &vs->job; -} - -void vnc_job_push(VncJob *job) -{ - VncState *vs = job->vs; - - vs->output.buffer[job->saved_offset] = (job->rectangles >> 8) & 0xFF; - vs->output.buffer[job->saved_offset + 1] = job->rectangles & 0xFF; - vnc_flush(job->vs); -} - -int vnc_job_add_rect(VncJob *job, int x, int y, int w, int h) -{ - int n; - - n = vnc_send_framebuffer_update(job->vs, x, y, w, h); - if (n >= 0) - job->rectangles += n; - return n; -} - -bool vnc_has_job(VncState *vs) -{ - return false; -} diff --git a/ui/vnc-jobs-async.c b/ui/vnc-jobs.c similarity index 100% rename from ui/vnc-jobs-async.c rename to ui/vnc-jobs.c diff --git a/ui/vnc-jobs.h b/ui/vnc-jobs.h index 4c661f95e5..86e6d888c6 100644 --- a/ui/vnc-jobs.h +++ b/ui/vnc-jobs.h @@ -38,51 +38,35 @@ bool vnc_has_job(VncState *vs); void vnc_jobs_clear(VncState *vs); void vnc_jobs_join(VncState *vs); -#ifdef CONFIG_VNC_THREAD - void vnc_jobs_consume_buffer(VncState *vs); void vnc_start_worker_thread(void); bool vnc_worker_thread_running(void); void vnc_stop_worker_thread(void); -#endif /* CONFIG_VNC_THREAD */ - /* Locks */ static inline int vnc_trylock_display(VncDisplay *vd) { -#ifdef CONFIG_VNC_THREAD return qemu_mutex_trylock(&vd->mutex); -#else - return 0; -#endif } static inline void vnc_lock_display(VncDisplay *vd) { -#ifdef CONFIG_VNC_THREAD qemu_mutex_lock(&vd->mutex); -#endif } static inline void vnc_unlock_display(VncDisplay *vd) { -#ifdef CONFIG_VNC_THREAD qemu_mutex_unlock(&vd->mutex); -#endif } static inline void vnc_lock_output(VncState *vs) { -#ifdef CONFIG_VNC_THREAD qemu_mutex_lock(&vs->output_mutex); -#endif } static inline void vnc_unlock_output(VncState *vs) { -#ifdef CONFIG_VNC_THREAD qemu_mutex_unlock(&vs->output_mutex); -#endif } #endif /* VNC_JOBS_H */ diff --git a/ui/vnc.c b/ui/vnc.c index 54bc5adab6..cf1cae2de4 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -526,7 +526,6 @@ static void vnc_desktop_resize(VncState *vs) vnc_flush(vs); } -#ifdef CONFIG_VNC_THREAD static void vnc_abort_display_jobs(VncDisplay *vd) { VncState *vs; @@ -545,11 +544,6 @@ static void vnc_abort_display_jobs(VncDisplay *vd) vnc_unlock_output(vs); } } -#else -static void vnc_abort_display_jobs(VncDisplay *vd) -{ -} -#endif static void vnc_dpy_resize(DisplayState *ds) { @@ -867,19 +861,12 @@ static int find_and_clear_dirty_height(struct VncState *vs, return h; } -#ifdef CONFIG_VNC_THREAD static int vnc_update_client_sync(VncState *vs, int has_dirty) { int ret = vnc_update_client(vs, has_dirty); vnc_jobs_join(vs); return ret; } -#else -static int vnc_update_client_sync(VncState *vs, int has_dirty) -{ - return vnc_update_client(vs, has_dirty); -} -#endif static int vnc_update_client(VncState *vs, int has_dirty) { @@ -1066,11 +1053,9 @@ static void vnc_disconnect_finish(VncState *vs) qemu_remove_led_event_handler(vs->led); vnc_unlock_output(vs); -#ifdef CONFIG_VNC_THREAD qemu_mutex_destroy(&vs->output_mutex); qemu_bh_delete(vs->bh); buffer_free(&vs->jobs_buffer); -#endif for (i = 0; i < VNC_STAT_ROWS; ++i) { g_free(vs->lossy_rect[i]); @@ -1286,14 +1271,12 @@ static long vnc_client_read_plain(VncState *vs) return ret; } -#ifdef CONFIG_VNC_THREAD static void vnc_jobs_bh(void *opaque) { VncState *vs = opaque; vnc_jobs_consume_buffer(vs); } -#endif /* * First function called whenever there is more data to be read from @@ -2699,10 +2682,8 @@ static void vnc_connect(VncDisplay *vd, int csock, int skipauth) vs->as.fmt = AUD_FMT_S16; vs->as.endianness = 0; -#ifdef CONFIG_VNC_THREAD qemu_mutex_init(&vs->output_mutex); vs->bh = qemu_bh_new(vnc_jobs_bh, vs); -#endif QTAILQ_INSERT_HEAD(&vd->clients, vs, next); @@ -2762,10 +2743,8 @@ void vnc_display_init(DisplayState *ds) if (!vs->kbd_layout) exit(1); -#ifdef CONFIG_VNC_THREAD qemu_mutex_init(&vs->mutex); vnc_start_worker_thread(); -#endif dcl->dpy_copy = vnc_dpy_copy; dcl->dpy_update = vnc_dpy_update; diff --git a/ui/vnc.h b/ui/vnc.h index a851ebd8ea..068c2fcda5 100644 --- a/ui/vnc.h +++ b/ui/vnc.h @@ -29,9 +29,7 @@ #include "qemu-common.h" #include "qemu-queue.h" -#ifdef CONFIG_VNC_THREAD #include "qemu-thread.h" -#endif #include "console.h" #include "monitor.h" #include "audio/audio.h" @@ -146,9 +144,7 @@ struct VncDisplay DisplayState *ds; kbd_layout_t *kbd_layout; int lock_key_sync; -#ifdef CONFIG_VNC_THREAD QemuMutex mutex; -#endif QEMUCursor *cursor; int cursor_msize; @@ -216,7 +212,6 @@ typedef struct VncZywrle { int buf[VNC_ZRLE_TILE_WIDTH * VNC_ZRLE_TILE_HEIGHT]; } VncZywrle; -#ifdef CONFIG_VNC_THREAD struct VncRect { int x; @@ -238,14 +233,6 @@ struct VncJob QLIST_HEAD(, VncRectEntry) rectangles; QTAILQ_ENTRY(VncJob) next; }; -#else -struct VncJob -{ - VncState *vs; - int rectangles; - size_t saved_offset; -}; -#endif struct VncState { @@ -300,13 +287,9 @@ struct VncState QEMUPutLEDEntry *led; bool abort; -#ifndef CONFIG_VNC_THREAD - VncJob job; -#else QemuMutex output_mutex; QEMUBH *bh; Buffer jobs_buffer; -#endif /* Encoding specific, if you add something here, don't forget to * update vnc_async_encoding_start() -- 2.11.4.GIT