From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:33215) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QS69T-00021P-OQ for qemu-devel@nongnu.org; Thu, 02 Jun 2011 07:33:24 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QS69S-0002O3-EZ for qemu-devel@nongnu.org; Thu, 02 Jun 2011 07:33:23 -0400 Received: from fmmailgate03.web.de ([217.72.192.234]:47136) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QS69R-0002Nq-RQ for qemu-devel@nongnu.org; Thu, 02 Jun 2011 07:33:22 -0400 Message-Id: <9D4F9B8A-C5D0-493B-BC17-AB9916E7F4A1@web.de> From: =?ISO-8859-1?Q?Andreas_F=E4rber?= In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed; delsp=yes Content-Transfer-Encoding: quoted-printable Mime-Version: 1.0 (Apple Message framework v936) Date: Thu, 2 Jun 2011 13:33:18 +0200 References: <1306699131-59195-1-git-send-email-andreas.faerber@web.de> Sender: andreas.faerber@web.de Subject: Re: [Qemu-devel] [PATCH] cocoa: Provide central qemu_main() prototype List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Alexandre Raymond , QEMU Developers Am 30.05.2011 um 01:53 schrieb Alexandre Raymond: > Just thinking out loud here : wouldn't it make more sense to put the > main() of each gui framework directly in its corresponding file and > select the right one in the makefile using the configure options? > > so you'd have > -no gui -> ui/no_gui.c:main() -> qemu_main() =3D=3D=3D compile with = =20 > no_gui.c + vl.c > -sdl -> ui/sdl.c:main() -> qemu_main() =3D=3D=3D compile with sdl.c + = vl.c > -cocoa -> ui/cocoa.m:main() -> qemu_main() =3D=3D=3D compile with = cocoa.m =20 > + vl.c > > with ui/no_gui.c, ui/sdl.c and ui/cocoa.m each having their own =20 > main(): > ----8<---- > ... > int main(...) { > return qemu_main(....); > } > ... > ----8<---- > > and definitively rename main() to qemu_main() in vl.c ? Anthony, waiting on your comment here as it's an overall UI =20 architectural question. To me that sounds the wrong direction to fix this... The only frontend =20= that forces another main() function on us seems to be SDL under some =20 circumstances. For Cocoa that was a QEMU-internal choice. Instead of always renaming our main() function, maybe we can introduce =20= some general hooks from our main() that the frontends can use to =20 initialize them? One hook would need to be before processing of =20 options (since launching a Cocoa app may add some Cocoa-specific =20 parameters from the desktop or AppleScript/Automator) and another one =20= once the options are processed and it's clear what display mode we're =20= in. So should we go ahead with my patch for the next pull or do some =20 reorganization touching all frontends? Andreas > On Sun, May 29, 2011 at 3:58 PM, Andreas F=E4rber = > wrote: >> This fixes a missing prototype warning in vl.c and obsoletes >> the prototype in cocoa.m. Adjust callers in cocoa.m to supply >> third argument, which is currently only used on Linux/ppc. >> >> The prototype is designed so that it could be shared with SDL >> and other frontends, if desired. >> >> Cc: Alexandre Raymond >> Signed-off-by: Andreas F=E4rber >> --- >> qemu-common.h | 5 +++++ >> ui/cocoa.m | 6 +++--- >> 2 files changed, 8 insertions(+), 3 deletions(-) >> >> diff --git a/qemu-common.h b/qemu-common.h >> index b851b20..218289c 100644 >> --- a/qemu-common.h >> +++ b/qemu-common.h >> @@ -131,6 +131,11 @@ static inline char *realpath(const char *path, =20= >> char *resolved_path) >> >> #endif /* !defined(NEED_CPU_H) */ >> >> +/* main function, renamed */ >> +#if defined(CONFIG_COCOA) >> +int qemu_main(int argc, char **argv, char **envp); >> +#endif >> + >> /* bottom halves */ >> typedef void QEMUBHFunc(void *opaque); >> >> diff --git a/ui/cocoa.m b/ui/cocoa.m >> index 1ff1ac6..6566e46 100644 >> --- a/ui/cocoa.m >> +++ b/ui/cocoa.m >> @@ -23,6 +23,7 @@ >> */ >> >> #import >> +#include >> >> #include "qemu-common.h" >> #include "console.h" >> @@ -61,7 +62,6 @@ typedef struct { >> int bitsPerPixel; >> } QEMUScreen; >> >> -int qemu_main(int argc, char **argv); // main defined in qemu/vl.c >> NSWindow *normalWindow; >> id cocoaView; >> static DisplayChangeListener *dcl; >> @@ -794,7 +794,7 @@ static int cocoa_keycode_to_qemu(int keycode) >> COCOA_DEBUG("QemuCocoaAppController: startEmulationWithArgc\n"); >> >> int status; >> - status =3D qemu_main(argc, argv); >> + status =3D qemu_main(argc, argv, *_NSGetEnviron()); >> exit(status); >> } >> >> @@ -876,7 +876,7 @@ int main (int argc, const char * argv[]) { >> !strcmp(opt, "-nographic") || >> !strcmp(opt, "-version") || >> !strcmp(opt, "-curses")) { >> - return qemu_main(gArgc, gArgv); >> + return qemu_main(gArgc, gArgv, *_NSGetEnviron()); >> } >> } >> } >> -- >> 1.7.5.3