From: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
To: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Update cocoa.m to match new DisplayState code
Date: Sat, 24 Jan 2009 15:36:20 +0000 [thread overview]
Message-ID: <497B3574.3060802@eu.citrix.com> (raw)
In-Reply-To: <3A471E0D-F371-46C4-B0FB-A476D69845CD@digitalescape.info>
Samuel Benson wrote:
> Hello all,
>
> Attached patch is an attempt to update cocoa.m to be in sync with the new
> displaystate changes committed a few weeks back.
>
> Tested working on OS X 10.5.6 on G4 and G5 PPC machines.
>
> Tests and comments welcome.
Hi Samuel, thanks for your efforts.
> @@ -396,18 +397,18 @@ int cocoa_keycode_to_qemu(int keycode)
> if (dataProviderRef)
> CGDataProviderRelease(dataProviderRef);
> if (screenBuffer)
> - free(screenBuffer);
> - screenBuffer = malloc( w * 4 * h );
> -
> - ds->data = screenBuffer;
> - ds->linesize = (w * 4);
> - ds->depth = 32;
> - ds->width = w;
> - ds->height = h;
> + qemu_free(screenBuffer);
> + screenBuffer = qemu_mallocz( w * 4 * h );
> +
> + ds->surface->data = screenBuffer;
> + ds->surface->linesize = (w * 4);
> + ds->surface->pf.depth = 32;
> + ds->surface->width = w;
> + ds->surface->height = h;
> #ifdef __LITTLE_ENDIAN__
> - ds->bgr = 1;
> + ds->surface->flags = 0x00;
> #else
> - ds->bgr = 0;
> + ds->surface->flags = QEMU_BIG_ENDIAN_FLAG;
> #endif
>
> dataProviderRef = CGDataProviderCreateWithData(NULL, screenBuffer,
> w * 4 * h, NULL);
It would be better not to change the DisplayState surface from
cocoa\sdl\vnc but try to render the format exposed by the emulated
graphic card ourself.
In fact in most cases the emulated vga exposes a 32bpp surface with
linesize = width * 4, so you don't need to force it yourself.
The only exception is the 16bpp case, but you should be able to render
that as well without too many problems.
> void cocoa_display_init(DisplayState *ds, int full_screen)
> {
> COCOA_DEBUG("qemu_cocoa: cocoa_display_init\n");
>
> - // register vga outpu callbacks
> - ds->dpy_update = cocoa_update;
> - ds->dpy_resize = cocoa_resize;
> - ds->dpy_refresh = cocoa_refresh;
> + dcl = qemu_mallocz(sizeof(DisplayChangeListener));
> +
> + // register vga output callbacks
> + dcl->dpy_update = cocoa_update;
> + dcl->dpy_resize = cocoa_resize;
> + dcl->dpy_refresh = cocoa_refresh;
>
> + register_displaychangelistener(ds, dcl);
> +
> // give window a initial Size
> - cocoa_resize(ds, 640, 400);
> + cocoa_resize(ds);
>
The initialization seems correct, the call to cocoa_resize may be
unnecessary.
next prev parent reply other threads:[~2009-01-24 15:42 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-01-23 22:41 [Qemu-devel] [PATCH] Update cocoa.m to match new DisplayState code Samuel Benson
2009-01-24 15:36 ` Stefano Stabellini [this message]
2009-01-24 19:16 ` Samuel Benson
2009-01-24 21:22 ` Alexander Graf
2009-01-25 6:34 ` Samuel Benson
2009-01-26 11:14 ` Stefano Stabellini
2009-01-24 17:41 ` Anthony Liguori
[not found] ` <1A55CC66-7DBD-4129-9FAE-C5FD6F3D2FC2@hotmail.com>
2009-01-25 21:14 ` C.W. Betts
2009-01-25 21:48 ` Samuel Benson
-- strict thread matches above, loose matches on Subject: below --
2009-01-25 12:25 Christian Brunschen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=497B3574.3060802@eu.citrix.com \
--to=stefano.stabellini@eu.citrix.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).