Re: [Qemu-devel] [PATCH] cocoa.m: Adds console items to the view menu
On Feb 13, 2015, at 2:45 AM, Gerd Hoffmann wrote: > Hi, > >> We're going to need to automatically create and update >> the menu entries based on which consoles get created >> if we want this to work properly, I think. Gerd, any >> suggestions? Is there a hook for "list of active >> consoles has changed"? > > No. consoles are not hotpluggable. > >> What's the right way to get >> the printable name of a console? > > gd_vc_gfx_init() has code for gfx consoles (qemu_console_is_graphic() == > true). > > There is nothing for text consoles. > > Guess we should create a qemu_console_get_label() helper function in > ui/console.c, then move the code from gd_vc_gfx_init() to that place, > and for text consoles use QemuConsole->chr->label. > > cheers, > Gerd Thank you Gerd for your suggestion. Here is my suggestion: int get_Graphics_Console_Index() int get_Serial_Console_Index() int get_Parallel_Console_Index() int get_Monitor_Console_Index() Then I would be able to do this: console_select(get_Serial_Console_Index()); The is simple and to the point. No having to have to search for a console. If the console does not exist, the function could return -1. Then the code would something like this: if(get_Serial_Console_Index() != -1) console_select(get_Serial_Console_Index()); else printf("Sorry but Serial console does not exist\n\a");
Re: [Qemu-devel] [PATCH] cocoa.m: Adds console items to the view menu
Hi, > We're going to need to automatically create and update > the menu entries based on which consoles get created > if we want this to work properly, I think. Gerd, any > suggestions? Is there a hook for "list of active > consoles has changed"? No. consoles are not hotpluggable. > What's the right way to get > the printable name of a console? gd_vc_gfx_init() has code for gfx consoles (qemu_console_is_graphic() == true). There is nothing for text consoles. Guess we should create a qemu_console_get_label() helper function in ui/console.c, then move the code from gd_vc_gfx_init() to that place, and for text consoles use QemuConsole->chr->label. cheers, Gerd
Re: [Qemu-devel] [PATCH] cocoa.m: Adds console items to the view menu
On Feb 11, 2015, at 10:39 PM, Peter Maydell wrote: > On 24 January 2015 at 01:56, Programmingkid wrote: >> This patch adds these consoles to the View menu: >> VGA >> QEMU Monitor >> Parallel >> Serial >> >> Signed-off-by: John Arbuckle > >> +/* Displays the VGA screen */ >> +- (void)displayVGA:(id)sender >> +{ >> +console_select(0); >> +} >> + >> +/* Displays the QEMU Monitor screen */ >> +- (void)displayMonitor:(id)sender >> +{ >> +console_select(1); >> +} >> + >> +/* Displays the parallel port screen */ >> +- (void)displayParallel:(id)sender >> +{ >> +console_select(3); >> +} >> + >> +/* Displays the serial port screen */ >> +- (void)displaySerial:(id)sender >> +{ >> +console_select(2); >> +} > > I'm afraid this doesn't work, because there's no guarantee > that these consoles will be created or in this order. > They just happen to be the set you get for the x86 > PC model. If you boot a versatilepb ARM image with the > serial output directed to stdio, for instance, then the > "serial" entry in the menu gets you the parallel > port console, and the parallel port entry does nothing, > because this board and config happens to end up creating > only 3 consoles, not 4 (graphics, monitor, parallel). > > We're going to need to automatically create and update > the menu entries based on which consoles get created > if we want this to work properly, I think. Gerd, any > suggestions? Is there a hook for "list of active > consoles has changed"? What's the right way to get > the printable name of a console? Do you know where the code is that creates the consoles?
Re: [Qemu-devel] [PATCH] cocoa.m: Adds console items to the view menu
On Feb 11, 2015, at 10:39 PM, Peter Maydell wrote: > On 24 January 2015 at 01:56, Programmingkid wrote: >> This patch adds these consoles to the View menu: >> VGA >> QEMU Monitor >> Parallel >> Serial >> >> Signed-off-by: John Arbuckle > >> +/* Displays the VGA screen */ >> +- (void)displayVGA:(id)sender >> +{ >> +console_select(0); >> +} >> + >> +/* Displays the QEMU Monitor screen */ >> +- (void)displayMonitor:(id)sender >> +{ >> +console_select(1); >> +} >> + >> +/* Displays the parallel port screen */ >> +- (void)displayParallel:(id)sender >> +{ >> +console_select(3); >> +} >> + >> +/* Displays the serial port screen */ >> +- (void)displaySerial:(id)sender >> +{ >> +console_select(2); >> +} > > I'm afraid this doesn't work, because there's no guarantee > that these consoles will be created or in this order. > They just happen to be the set you get for the x86 > PC model. If you boot a versatilepb ARM image with the > serial output directed to stdio, for instance, then the > "serial" entry in the menu gets you the parallel > port console, and the parallel port entry does nothing, > because this board and config happens to end up creating > only 3 consoles, not 4 (graphics, monitor, parallel). > > We're going to need to automatically create and update > the menu entries based on which consoles get created > if we want this to work properly, I think. Gerd, any > suggestions? Is there a hook for "list of active > consoles has changed"? What's the right way to get > the printable name of a console? > I was hoping the gtk.c file would have some code I could use, but it doesn't. My model for these menu items came from a YouTube video demonstrating the GTK UI in QEMU. Does QEMU still have these menu items in the GTK UI? The gtk.c file does not seem to indicate that.
Re: [Qemu-devel] [PATCH] cocoa.m: Adds console items to the view menu
On 24 January 2015 at 01:56, Programmingkid wrote: > This patch adds these consoles to the View menu: > VGA > QEMU Monitor > Parallel > Serial > > Signed-off-by: John Arbuckle > +/* Displays the VGA screen */ > +- (void)displayVGA:(id)sender > +{ > +console_select(0); > +} > + > +/* Displays the QEMU Monitor screen */ > +- (void)displayMonitor:(id)sender > +{ > +console_select(1); > +} > + > +/* Displays the parallel port screen */ > +- (void)displayParallel:(id)sender > +{ > +console_select(3); > +} > + > +/* Displays the serial port screen */ > +- (void)displaySerial:(id)sender > +{ > +console_select(2); > +} I'm afraid this doesn't work, because there's no guarantee that these consoles will be created or in this order. They just happen to be the set you get for the x86 PC model. If you boot a versatilepb ARM image with the serial output directed to stdio, for instance, then the "serial" entry in the menu gets you the parallel port console, and the parallel port entry does nothing, because this board and config happens to end up creating only 3 consoles, not 4 (graphics, monitor, parallel). We're going to need to automatically create and update the menu entries based on which consoles get created if we want this to work properly, I think. Gerd, any suggestions? Is there a hook for "list of active consoles has changed"? What's the right way to get the printable name of a console? thanks -- PMM
[Qemu-devel] [PATCH] cocoa.m: Adds console items to the view menu
This patch adds these consoles to the View menu: VGA QEMU Monitor Parallel Serial Signed-off-by: John Arbuckle --- ui/cocoa.m | 34 ++ 1 files changed, 34 insertions(+), 0 deletions(-) diff --git a/ui/cocoa.m b/ui/cocoa.m index d37c29b..c88c0d0 100644 --- a/ui/cocoa.m +++ b/ui/cocoa.m @@ -801,6 +801,10 @@ QemuCocoaView *cocoaView; - (void)toggleFullScreen:(id)sender; - (void)showQEMUDoc:(id)sender; - (void)showQEMUTec:(id)sender; +- (void)displayVGA:(id)sender; +- (void)displayMonitor:(id)sender; +- (void)displayParallel:(id)sender; +- (void)displaySerial:(id)sender; @end @implementation QemuCocoaAppController @@ -943,6 +947,31 @@ QemuCocoaView *cocoaView; [[NSWorkspace sharedWorkspace] openFile:[NSString stringWithFormat:@"%@/../doc/qemu/qemu-tech.html", [[NSBundle mainBundle] resourcePath]] withApplication:@"Help Viewer"]; } + +/* Displays the VGA screen */ +- (void)displayVGA:(id)sender +{ +console_select(0); +} + +/* Displays the QEMU Monitor screen */ +- (void)displayMonitor:(id)sender +{ +console_select(1); +} + +/* Displays the parallel port screen */ +- (void)displayParallel:(id)sender +{ +console_select(3); +} + +/* Displays the serial port screen */ +- (void)displaySerial:(id)sender +{ +console_select(2); +} + @end @@ -1006,6 +1035,11 @@ int main (int argc, const char * argv[]) { // View menu menu = [[NSMenu alloc] initWithTitle:@"View"]; [menu addItem: [[[NSMenuItem alloc] initWithTitle:@"Enter Fullscreen" action:@selector(toggleFullScreen:) keyEquivalent:@"f"] autorelease]]; // Fullscreen +[menu addItem:[NSMenuItem separatorItem]]; //Separator +[menu addItem: [[[NSMenuItem alloc] initWithTitle:@"VGA" action:@selector(displayVGA:) keyEquivalent:@""] autorelease]]; // VGA +[menu addItem: [[[NSMenuItem alloc] initWithTitle:@"QEMU Monitor" action:@selector(displayMonitor:) keyEquivalent:@""] autorelease]]; // QEMU Monitor +[menu addItem: [[[NSMenuItem alloc] initWithTitle:@"Parallel" action:@selector(displayParallel:) keyEquivalent:@""] autorelease]]; // Parallel +[menu addItem: [[[NSMenuItem alloc] initWithTitle:@"Serial" action:@selector(displaySerial:) keyEquivalent:@""] autorelease]]; // Serial menuItem = [[[NSMenuItem alloc] initWithTitle:@"View" action:nil keyEquivalent:@""] autorelease]; [menuItem setSubmenu:menu]; [[NSApp mainMenu] addItem:menuItem]; -- 1.7.5.4