From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:46148) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SQOVk-0000iL-TN for qemu-devel@nongnu.org; Fri, 04 May 2012 15:49:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SQOVi-0000tO-Vd for qemu-devel@nongnu.org; Fri, 04 May 2012 15:49:52 -0400 Received: from v220110690675601.yourvserver.net ([78.47.199.172]:46682) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SQOVi-0000tE-PA for qemu-devel@nongnu.org; Fri, 04 May 2012 15:49:50 -0400 Message-ID: <4FA432DB.9030508@weilnetz.de> Date: Fri, 04 May 2012 21:49:47 +0200 From: Stefan Weil MIME-Version: 1.0 References: <1335851588-21011-1-git-send-email-sw@weilnetz.de> In-Reply-To: <1335851588-21011-1-git-send-email-sw@weilnetz.de> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH] sdl: Avoid unnecessary resizing of the display surface List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: qemu-devel@nongnu.org Am 01.05.2012 07:53, schrieb Stefan Weil: > If neither width nor height changes, nothing has to be done. > > Cc: Anthony Liguori > Signed-off-by: Stefan Weil > --- > > This patch improves SDL for any host (for example with remote X displays), > but the main reason why I wrote it was another problem: > > On w32 / w64 hosts, qemu-system-arm has a deadlock when it calls > sdl_resize_displaysurface during Linux boot. One thread waits for > a critical region, another thread waits inside SDL_SetVideoMode. > > The patch avoids this problem. Paolo, maybe you have an idea what > could cause the deadlock. Debugging on wxx is terrible - up to now, > I did not succeed in analysing the lock situation with gdb. > > Regards, > Stefan W. > > ui/sdl.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/ui/sdl.c b/ui/sdl.c > index 8700b7a..8c1c71c 100644 > --- a/ui/sdl.c > +++ b/ui/sdl.c > @@ -224,8 +224,11 @@ static void sdl_free_displaysurface(DisplaySurface *surface) > > static DisplaySurface* sdl_resize_displaysurface(DisplaySurface *surface, int width, int height) > { > - sdl_free_displaysurface(surface); > - return sdl_create_displaysurface(width, height); > + if (surface->width != width || surface->height != height) { > + sdl_free_displaysurface(surface); > + surface = sdl_create_displaysurface(width, height); > + } > + return surface; > } > > /* generic keyboard conversion */ > Please don't apply this patch. It is not complete and can cause a crash (seen on w32 when resizing the SDL window). I'll send an update. Regards, Stefan W.