From patchwork Wed Feb 22 09:36:56 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Alon Levy X-Patchwork-Id: 142423 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id AA2FBB6F98 for ; Wed, 22 Feb 2012 20:37:28 +1100 (EST) Received: from localhost ([::1]:49424 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S08dV-00085d-Jl for incoming@patchwork.ozlabs.org; Wed, 22 Feb 2012 04:37:21 -0500 Received: from eggs.gnu.org ([140.186.70.92]:33457) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S08dG-00085I-QL for qemu-devel@nongnu.org; Wed, 22 Feb 2012 04:37:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S08dA-000672-Ov for qemu-devel@nongnu.org; Wed, 22 Feb 2012 04:37:06 -0500 Received: from mx1.redhat.com ([209.132.183.28]:38641) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S08dA-00066s-FO for qemu-devel@nongnu.org; Wed, 22 Feb 2012 04:37:00 -0500 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id q1M9awpm002971 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Wed, 22 Feb 2012 04:36:58 -0500 Received: from garlic.redhat.com (vpn-200-9.tlv.redhat.com [10.35.200.9]) by int-mx12.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id q1M9av09028647 for ; Wed, 22 Feb 2012 04:36:58 -0500 From: Alon Levy To: qemu-devel@nongnu.org Date: Wed, 22 Feb 2012 11:36:56 +0200 Message-Id: <1329903416-9861-1-git-send-email-alevy@redhat.com> In-Reply-To: References: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.68 on 10.5.11.25 X-MIME-Autoconverted: from 8bit to quoted-printable by mx1.redhat.com id q1M9awpm002971 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH] qxl: fix spice+sdl no cursor regression X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org regression introduced by 075360945860ad9bdd491921954b383bf762b0e5, Reported-by: Fabiano FidĂȘncio Signed-off-by: Alon Levy --- Thanks for the report, this fixes the problem for me, the problem with reverting the commit you proposed is that it would reintroduce dropping of the global mutex in spice code. hw/qxl.c | 2 ++ ui/spice-display.c | 23 ++++++++++++++--------- ui/spice-display.h | 1 + 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/hw/qxl.c b/hw/qxl.c index 87ad49a..6f8351c 100644 --- a/hw/qxl.c +++ b/hw/qxl.c @@ -1545,6 +1545,8 @@ static void display_refresh(struct DisplayState *ds) { if (qxl0->mode == QXL_MODE_VGA) { qemu_spice_display_refresh(&qxl0->ssd); + } else { + qemu_spice_cursor_refresh_unlocked(&qxl0->ssd); } } diff --git a/ui/spice-display.c b/ui/spice-display.c index 6c302a3..c6e61d8 100644 --- a/ui/spice-display.c +++ b/ui/spice-display.c @@ -317,16 +317,8 @@ void qemu_spice_display_resize(SimpleSpiceDisplay *ssd) ssd->notify++; } -void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd) +void qemu_spice_cursor_refresh_unlocked(SimpleSpiceDisplay *ssd) { - dprint(3, "%s:\n", __FUNCTION__); - vga_hw_update(); - - qemu_mutex_lock(&ssd->lock); - if (ssd->update == NULL) { - ssd->update = qemu_spice_create_update(ssd); - ssd->notify++; - } if (ssd->cursor) { ssd->ds->cursor_define(ssd->cursor); cursor_put(ssd->cursor); @@ -337,6 +329,19 @@ void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd) ssd->mouse_x = -1; ssd->mouse_y = -1; } +} + +void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd) +{ + dprint(3, "%s:\n", __func__); + vga_hw_update(); + + qemu_mutex_lock(&ssd->lock); + if (ssd->update == NULL) { + ssd->update = qemu_spice_create_update(ssd); + ssd->notify++; + } + qemu_spice_cursor_refresh_unlocked(ssd); qemu_mutex_unlock(&ssd->lock); if (ssd->notify) { diff --git a/ui/spice-display.h b/ui/spice-display.h index 5e52df9..a23bfc8 100644 --- a/ui/spice-display.h +++ b/ui/spice-display.h @@ -97,6 +97,7 @@ void qemu_spice_display_update(SimpleSpiceDisplay *ssd, int x, int y, int w, int h); void qemu_spice_display_resize(SimpleSpiceDisplay *ssd); void qemu_spice_display_refresh(SimpleSpiceDisplay *ssd); +void qemu_spice_cursor_refresh_unlocked(SimpleSpiceDisplay *ssd); void qemu_spice_add_memslot(SimpleSpiceDisplay *ssd, QXLDevMemSlot *memslot, qxl_async_io async);