Changeset 94

Show
Ignore:
Timestamp:
09/15/07 01:24:42 (1 year ago)
Author:
mike
Message:

[fix] updated branch 0_9_0 with all fixes from 93
[fix] Q icon

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/0_9_0/build_i386.sh

    r86 r94  
    3535patch -p0 -u < ../../q/patches/q_host-cocoa_02.diff 
    3636 
    37 #qemu hotfix for qcow2 
     37#qemu cvs backport for qcow2 
    3838patch -p0 -u < ../../q/patches/qemu-0.9.0-qcow2.diff 
     39 
     40#qemu cvs backport rgb support for bigendian 
     41patch -p1 -u < ../../q/patches/qemu-0.9.0-big_endian_display4.diff 
    3942 
    4043#qemu gcc4 patches 
     
    5053 
    5154patch -p1 -u < ../../q/patches/qemu-0.8.0-osx-bugfix.patch 
    52  
    53 #qemu rgb support for intel 
    54 cd hw 
    55 patch -p0 -u < ../../../q/patches/q_vga.c_02.diff 
    56 cd .. 
    5755 
    5856#qemu add 2nd Bootdevice 
  • branches/0_9_0/build_ppc.sh

    r86 r94  
    3737patch -p0 -u < ../../q/patches/q_host-cocoa_02.diff 
    3838 
    39 #qemu hotfix for qcow2 
     39#qemu cvs backport for qcow2 
    4040patch -p0 -u < ../../q/patches/qemu-0.9.0-qcow2.diff 
    4141 
    42 #qemu rgb support for intel 
    43 cd hw 
    44 #patch -p0 -u < ../../../q/patches/q_vga.c_02.diff 
    45 cd .. 
     42#qemu cvs backport rgb support for bigendian 
     43patch -p1 -u < ../../q/patches/qemu-0.9.0-big_endian_display4.diff 
    4644 
    4745#qemu add 2nd Bootdevice 
  • branches/0_9_0/changelog.txt

    r92 r94  
     1Q-0.9.0d94 
     2[fix] updated branch 0_9_0 with all fixes from 93 
     3[fix] Q icon 
     4 
     5Q-0.9.0d93 
     6[fix] remove crashed/stray guests from doServer (#15) 
     7[fix] Q Control: StopPC Icon is a forcequit if task is not responding or doServer is not responding (#15) 
     8[fix] Fullscreen: alt-tabing back to Q brings you back to FS Guest (#32) 
     9[fix] Fullscreen: switching animation always vertical 
     10[fix] Fullscreen: honor aspect ratio, only factors of 1/1.25/1.5/1.75/2.0/3.0/4.0... (#18) 
     11[fix] doServer: added missing dealloc 
     12[fix] quartz: panther compiling 
     13[fix] quartz: small drawspeed improvements 
     14[fix] backport bgr support for bigendians (andreasf) (#14) 
     15[new] Q Control: EditPC can be used (read only) when guest is running (#23) 
     16[new] Q Control: commandline as tooltips of guests (#23) 
     17[new] Q icon 
     18 
    119Q-0.9.0d92 
    220[fix] ARM emulation on Q GUI breaks (Chocobo) (#17) 
  • branches/0_9_0/host-cocoa/cocoaQemu.m

    r92 r94  
    33 *  
    44 * Copyright (c) 2005 - 2007 Pierre d'Herbemont 
    5  *                                                      Mike Kronenberg 
    6  *                                                      many code/inspiration from SDL 1.2 code (LGPL) 
     5 *                          Mike Kronenberg 
     6 *                          many code/inspiration from SDL 1.2 code (LGPL) 
    77 *  
    88 * Permission is hereby granted, free of charge, to any person obtaining a copy 
     
    4949/* 
    5050 ------------------------------------------------------ 
    51        Headers 
    52          
     51    Headers 
     52     
    5353 ------------------------------------------------------ 
    5454*/ 
    5555/* 
    5656 ------------------------------------------------------ 
    57        QemuCocoa Video Driver 
     57    QemuCocoa Video Driver 
    5858 ------------------------------------------------------ 
    5959*/ 
     
    6666/* 
    6767 ------------------------------------------------------ 
    68        QemuCocoa CD-ROM Driver 
     68    QemuCocoa CD-ROM Driver 
    6969 ------------------------------------------------------ 
    7070*/ 
     
    7676/* 
    7777 ------------------------------------------------------ 
    78        Implementations 
    79          
     78    Implementations 
     79     
    8080 ------------------------------------------------------ 
    8181*/ 
    8282/* 
    8383 ------------------------------------------------------ 
    84        cocoaQemu 
     84    cocoaQemu 
    8585 ------------------------------------------------------ 
    8686*/ 
     
    8989-(id) init 
    9090{ 
    91 //     NSLog(@"cocoaQemu: init"); 
    92  
    93        if ((self = [super init])) { 
    94                /* set allowed filetypes */ 
    95                fileTypes = [[NSArray arrayWithObjects:@"qcow2", @"qcow", @"raw", @"cow", @"vmdk", @"cloop", @"img", @"iso", @"dsk", @"dmg", @"cdr", @"toast", @"flp", @"fs", nil] retain]; 
    96  
    97                /* pc */ 
    98                pcName = [@"" retain]; 
    99                pcWindowName = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"] retain]; 
    100                pcPath = [[@"~/Documents/QEMU/temp.qvm" stringByExpandingTildeInPath] retain]; 
    101                pcTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector( liveThumbnail ) userInfo:nil repeats:YES]; 
    102                [self liveThumbnail]; 
    103                pcDialogs = YES; 
    104                pc = self; 
    105  
    106                /* set openGL as default */ 
    107                pcOpenGLView = true; 
    108  
    109                /* setup progressWindow */ 
    110                progressWindow = [[cocoaQemuProgressWindow alloc] init]; 
    111  
    112                /* setup Q distributed object Client */ 
    113                qdoserver = [[NSConnection rootProxyForConnectionWithRegisteredName:@"qdoserver" host:nil] retain]; 
    114                [qdoserver setProtocolForProxy:@protocol(cocoaControlDOServerProto)]; 
    115                  
    116                /* Pasteboard *//* 
    117                bios_dir = [[NSString stringWithFormat:@"%@/qemu", [[NSBundle mainBundle] resourcePath]] cString]; 
    118                kbd_layout = init_keyboard_layout("de-ch"); 
    119 */              
    120                return self; 
    121        
    122        return nil; 
     91//  NSLog(@"cocoaQemu: init"); 
     92 
     93    if ((self = [super init])) { 
     94        /* set allowed filetypes */ 
     95        fileTypes = [[NSArray arrayWithObjects:@"qcow2", @"qcow", @"raw", @"cow", @"vmdk", @"cloop", @"img", @"iso", @"dsk", @"dmg", @"cdr", @"toast", @"flp", @"fs", nil] retain]; 
     96 
     97        /* pc */ 
     98        pcName = [@"" retain]; 
     99        pcWindowName = [[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleName"] retain]; 
     100        pcPath = [[@"~/Documents/QEMU/temp.qvm" stringByExpandingTildeInPath] retain]; 
     101        pcTimer = [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector( liveThumbnail ) userInfo:nil repeats:YES]; 
     102        [self liveThumbnail]; 
     103        pcDialogs = YES; 
     104        pc = self; 
     105 
     106        /* set openGL as default */ 
     107        pcOpenGLView = true; 
     108 
     109        /* setup progressWindow */ 
     110        progressWindow = [[cocoaQemuProgressWindow alloc] init]; 
     111 
     112        /* setup Q distributed object Client */ 
     113        qdoserver = [[NSConnection rootProxyForConnectionWithRegisteredName:@"qdoserver" host:nil] retain]; 
     114        [qdoserver setProtocolForProxy:@protocol(cocoaControlDOServerProto)]; 
     115 
     116        /* Pasteboard *//* 
     117        bios_dir = [[NSString stringWithFormat:@"%@/qemu", [[NSBundle mainBundle] resourcePath]] cString]; 
     118        kbd_layout = init_keyboard_layout("de-ch"); 
     119*/       
     120        return self; 
     121   
     122    return nil; 
    123123} 
    124124 
    125125- (void) dealloc 
    126126{ 
    127 //     NSLog(@"cocoaQemu: dealloc"); 
    128  
    129        [super dealloc]; 
     127//  NSLog(@"cocoaQemu: dealloc"); 
     128 
     129    [super dealloc]; 
    130130} 
    131131 
     
    133133- (BOOL) guestOrderFrontRegardless 
    134134{ 
    135 //     NSLog(@"cocoaQemu: guestOrderFrontRegardless"); 
    136  
    137        [pcWindow orderFrontRegardless]; 
    138        return true; 
     135//  NSLog(@"cocoaQemu: guestOrderFrontRegardless"); 
     136 
     137    [pcWindow orderFrontRegardless]; 
     138    return true; 
    139139} 
    140140 
    141141- (int) guestWindowLevel 
    142142{ 
    143 //     NSLog(@"cocoaQemu: guestWindowLevel"); 
    144  
    145        return [pcWindow level]; 
     143//  NSLog(@"cocoaQemu: guestWindowLevel"); 
     144 
     145    return [pcWindow level]; 
    146146} 
    147147 
    148148- (int) guestWindowNumber 
    149149{ 
    150 //     NSLog(@"cocoaQemu: guestWindowNumber"); 
    151  
    152        return [pcWindow windowNumber]; 
     150//  NSLog(@"cocoaQemu: guestWindowNumber"); 
     151 
     152    return [pcWindow windowNumber]; 
    153153} 
    154154 
    155155- (BOOL) guestOrderWindow:(NSWindowOrderingMode)place relativeTo:(int)otherWindowNumber 
    156156{ 
    157 //     NSLog(@"cocoaQemu: guestOrderWindow"); 
    158  
    159        [pcWindow orderWindow:place relativeTo:otherWindowNumber]; 
    160        return true; 
     157//  NSLog(@"cocoaQemu: guestOrderWindow"); 
     158 
     159    [pcWindow orderWindow:place relativeTo:otherWindowNumber]; 
     160    return true; 
    161161} 
    162162 
    163163- (BOOL) guestHide; 
    164164{ 
    165 //     NSLog(@"cocoaQemu: guestHide"); 
    166  
    167        [NSApp hide:self]; 
    168        return true; 
     165//  NSLog(@"cocoaQemu: guestHide"); 
     166 
     167    [NSApp hide:self]; 
     168    return true; 
    169169} 
    170170 
    171171- (BOOL) guestUnhide; 
    172172{ 
    173 //     NSLog(@"cocoaQemu: guestUnhide"); 
    174  
    175        [NSApp unhide:self]; 
    176        return true; 
     173//  NSLog(@"cocoaQemu: guestUnhide"); 
     174 
     175    [NSApp unhide:self]; 
     176    return true; 
    177177} 
    178178 
    179179- (BOOL) guestPause; 
    180180{ 
    181 //     NSLog(@"cocoaQemu: guestPause"); 
    182  
    183        [self pausePlay:self]; 
    184        return true; 
     181//  NSLog(@"cocoaQemu: guestPause"); 
     182 
     183    [self pausePlay:self]; 
     184    return true; 
    185185} 
    186186 
    187187- (BOOL) guestStop; 
    188188{ 
    189 //     NSLog(@"cocoaQemu: guestStop"); 
    190  
    191        [self shutdownPC]; 
    192        return true; 
     189//  NSLog(@"cocoaQemu: guestStop"); 
     190 
     191    [self shutdownPC]; 
     192    return true; 
    193193} 
    194194 
     
    196196- (NSString *) pcName 
    197197{ 
    198 //     NSLog(@"cocoaQemu: pcName"); 
    199  
    200        return pcName; 
     198//  NSLog(@"cocoaQemu: pcName"); 
     199 
     200    return pcName; 
    201201} 
    202202 
    203203- (NSString *) pcWindowName 
    204204{ 
    205 //     NSLog(@"cocoaQemu: pcWindowName"); 
    206  
    207        return pcWindowName; 
     205//  NSLog(@"cocoaQemu: pcWindowName"); 
     206 
     207    return pcWindowName; 
    208208} 
    209209 
    210210-(NSString *) smbPath 
    211211{ 
    212 //     NSLog(@"cocoaQemu: smbPath"); 
    213  
    214        return smbPath; 
     212//  NSLog(@"cocoaQemu: smbPath"); 
     213 
     214    return smbPath; 
    215215} 
    216216 
    217217- (id) qdoserver 
    218218{ 
    219 //     NSLog(@"cocoaQemu: qdoserver"); 
     219//  NSLog(@"cocoaQemu: qdoserver"); 
    220220 
    221221    return qdoserver; 
     
    224224- (BOOL) fullscreen 
    225225{ 
    226 //     NSLog(@"cocoaQemu: fullscreen"); 
    227  
    228        return fullscreen; 
     226//  NSLog(@"cocoaQemu: fullscreen"); 
     227 
     228    return fullscreen; 
    229229} 
    230230 
    231231- (void) setFullscreen:(BOOL)val 
    232232{ 
    233 //     NSLog(@"cocoaQemu: setFullscreen"); 
    234  
    235        fullscreen = val; 
     233//  NSLog(@"cocoaQemu: setFullscreen"); 
     234 
     235    fullscreen = val; 
    236236} 
    237237 
     
    259259- (BOOL) grab 
    260260{ 
    261 //     NSLog(@"cocoaQemu: grab"); 
    262  
    263        return grab; 
     261//  NSLog(@"cocoaQemu: grab"); 
     262 
     263    return grab; 
    264264} 
    265265 
    266266- (BOOL) absolute_enabled 
    267267{ 
    268 //     NSLog(@"cocoaQemu: absolute_enabled"); 
    269  
    270        return absolute_enabled; 
     268//  NSLog(@"cocoaQemu: absolute_enabled"); 
     269 
     270    return absolute_enabled; 
    271271} 
    272272 
    273273- (BOOL) tablet_enabled 
    274274{ 
    275 //     NSLog(@"cocoaQemu: tablet_enabled"); 
    276  
    277        return tablet_enabled; 
     275//  NSLog(@"cocoaQemu: tablet_enabled"); 
     276 
     277    return tablet_enabled; 
    278278} 
    279279 
    280280- (BOOL) wMStopWhenInactive 
    281281{ 
    282 //     NSLog(@"cocoaQemu: wMStopWhenInactive"); 
    283  
    284        return WMStopWhenInactive; 
     282//  NSLog(@"cocoaQemu: wMStopWhenInactive"); 
     283 
     284    return WMStopWhenInactive; 
    285285} 
    286286 
    287287- (BOOL) wMPaused 
    288288{ 
    289 //     NSLog(@"cocoaQemu: wMPaused"); 
    290  
    291        return vm_running; 
     289//  NSLog(@"cocoaQemu: wMPaused"); 
     290 
     291    return vm_running; 
    292292} 
    293293 
    294294- (BOOL) wMPausedByUser 
    295295{ 
    296 //     NSLog(@"cocoaQemu: wMPausedByUser"); 
    297  
    298        return wMPausedByUser; 
     296//  NSLog(@"cocoaQemu: wMPausedByUser"); 
     297 
     298    return wMPausedByUser; 
    299299} 
    300300 
    301301- (void) setGrab:(BOOL)val 
    302302{ 
    303 //     NSLog(@"cocoaQemu: setGrab"); 
    304  
    305        grab = val; 
     303//  NSLog(@"cocoaQemu: setGrab"); 
     304 
     305    grab = val; 
    306306} 
    307307 
    308308- (void) setAbsolute_enabled:(BOOL)val 
    309309{ 
    310 //     NSLog(@"cocoaQemu: setAbsolute_enabled"); 
    311  
    312        absolute_enabled = val; 
     310//  NSLog(@"cocoaQemu: setAbsolute_enabled"); 
     311 
     312    absolute_enabled = val; 
    313313} 
    314314 
    315315- (void) setTablet_enabled:(BOOL)val 
    316316{ 
    317 //     NSLog(@"cocoaQemu: setTablet_enabled"); 
    318  
    319        tablet_enabled = val; 
     317//  NSLog(@"cocoaQemu: setTablet_enabled"); 
     318 
     319    tablet_enabled = val; 
    320320} 
    321321 
    322322- (void) grabMouse 
    323323{ 
    324 //     NSLog(@"cocoaQemu: grabMouse"); 
    325  
    326        if (!grab) { 
    327                grab = YES; 
    328                [pcWindow setTitle: [NSString stringWithFormat: NSLocalizedStringFromTable(@"grabMouse:title", @"Localizable", @"cocoaQemu"), pcWindowName, pcName]]; 
    329                [NSCursor hide]; 
    330                CGAssociateMouseAndMouseCursorPosition ( FALSE ); 
    331        
     324//  NSLog(@"cocoaQemu: grabMouse"); 
     325 
     326    if (!grab) { 
     327        grab = YES; 
     328        [pcWindow setTitle: [NSString stringWithFormat: NSLocalizedStringFromTable(@"grabMouse:title", @"Localizable", @"cocoaQemu"), pcWindowName, pcName]]; 
     329        [NSCursor hide]; 
     330        CGAssociateMouseAndMouseCursorPosition ( FALSE ); 
     331   
    332332} 
    333333 
    334334- (void) ungrabMouse 
    335335{ 
    336 //     NSLog(@"cocoaQemu: ungrabMouse"); 
    337  
    338        if (grab) { 
    339                grab = NO; 
    340                [pcWindow setTitle: [NSString stringWithFormat:@"%@ - %@", pcWindowName, pcName]]; 
    341                [NSCursor unhide]; 
    342                CGAssociateMouseAndMouseCursorPosition ( TRUE ); 
    343        
     336//  NSLog(@"cocoaQemu: ungrabMouse"); 
     337 
     338    if (grab) { 
     339        grab = NO; 
     340        [pcWindow setTitle: [NSString stringWithFormat:@"%@ - %@", pcWindowName, pcName]]; 
     341        [NSCursor unhide]; 
     342        CGAssociateMouseAndMouseCursorPosition ( TRUE ); 
     343   
    344344} 
    345345 
    346346- (int) modifierAtIndex:(int)index 
    347347{ 
    348 //     NSLog(@"cocoaQemu: modifierAtIndex"); 
    349  
    350        return modifiers_state[index]; 
     348//  NSLog(@"cocoaQemu: modifierAtIndex"); 
     349 
     350    return modifiers_state[index]; 
    351351} 
    352352 
    353353- (void) setModifierAtIndex:(int)index to:(int)value 
    354354{ 
    355 //     NSLog(@"cocoaQemu: setModifierAtIndex"); 
    356  
    357        modifiers_state[index] = value; 
     355//  NSLog(@"cocoaQemu: setModifierAtIndex"); 
     356 
     357    modifiers_state[index] = value; 
    358358} 
    359359 
    360360- (void) resetModifiers 
    361361{ 
    362 //     NSLog(@"cocoaQemu: resetModifiers"); 
    363  
    364        int i; 
    365        for(i = 0; i < 256; i++) { 
    366                if (modifiers_state[i]) { 
    367                        if (i & 0x80) 
    368                                kbd_put_keycode(0xe0); 
    369                        kbd_put_keycode(i | 0x80); 
    370                        modifiers_state[i] = 0; 
    371                
    372        
     362//  NSLog(@"cocoaQemu: resetModifiers"); 
     363 
     364    int i; 
     365    for(i = 0; i < 256; i++) { 
     366        if (modifiers_state[i]) { 
     367            if (i & 0x80) 
     368                kbd_put_keycode(0xe0); 
     369            kbd_put_keycode(i | 0x80); 
     370            modifiers_state[i] = 0; 
     371       
     372   
    373373} 
    374374 
    375375- (id) pcWindow 
    376376{ 
    377 //     NSLog(@"cocoaQemu: pcWindow"); 
    378  
    379        return pcWindow; 
     377//  NSLog(@"cocoaQemu: pcWindow"); 
     378 
     379    return pcWindow; 
    380380} 
    381381 
    382382- (id) contentView 
    383383{ 
    384 //     NSLog(@"cocoaQemu: contentView"); 
    385  
    386        return contentView; 
     384//  NSLog(@"cocoaQemu: contentView"); 
     385 
     386    return contentView; 
    387387} 
    388388 
    389389- (void) liveThumbnail 
    390390{ 
    391 //     NSLog(@"cocoaQemu: liveThumbnail <%@>", pcPath); 
    392  
    393        if (![pcName isEqual:@""]) { 
    394                /* create liveThumbnail */ 
    395                NSBitmapImageRep *bitmapImageRep = [NSBitmapImageRep imageRepWithData: [[contentView screenshot:NSMakeSize(100,75)] TIFFRepresentation]]; 
    396                NSData *data = [bitmapImageRep representationUsingType: NSPNGFileType properties: nil]; 
    397                [data writeToFile: [NSString stringWithFormat: @"%@/thumbnail.png", pcPath] atomically: YES]; 
    398        
     391//  NSLog(@"cocoaQemu: liveThumbnail <%@>", pcPath); 
     392 
     393    if (![pcName isEqual:@""]) { 
     394        /* create liveThumbnail */ 
     395        NSBitmapImageRep *bitmapImageRep = [NSBitmapImageRep imageRepWithData: [[contentView screenshot:NSMakeSize(100,75)] TIFFRepresentation]]; 
     396        NSData *data = [bitmapImageRep representationUsingType: NSPNGFileType properties: nil]; 
     397        [data writeToFile: [NSString stringWithFormat: @"%@/thumbnail.png", pcPath] atomically: YES]; 
     398   
    399399} 
    400400 
    401401- (void) stopVM 
    402402{ 
    403 //     NSLog(@"cocoaQemu: stopVM"); 
    404  
    405        if (vm_running) 
    406                vm_stop(0); 
    407                [pcWindow display]; 
     403//  NSLog(@"cocoaQemu: stopVM"); 
     404 
     405    if (vm_running) 
     406        vm_stop(0); 
     407    [pcWindow display]; 
    408408} 
    409409 
    410410- (void) startVM 
    411411{ 
    412 //     NSLog(@"cocoaQemu: startVM"); 
    413  
    414        if (!vm_running) 
    415                vm_start(); 
    416                [pcWindow display]; 
     412//  NSLog(@"cocoaQemu: startVM"); 
     413 
     414    if (!vm_running) 
     415        vm_start(); 
     416    [pcWindow display]; 
    417417} 
    418418 
    419419- (void) saveVM 
    420420{ 
    421 //      NSLog(@"cocoaQemu: saveVM"); 
    422  
    423         /* show progressWindow */ 
    424         [progressWindow showProgressWindow:pcWindow text: NSLocalizedStringFromTable(@"saveVM:text", @"Localizable", @"cocoaQemu") name:pcName]; 
    425          
    426         /* stop VM */ 
    427         vm_stop(0); 
    428          
    429         /* generate Preview */ 
    430         NSBitmapImageRep *bitmapImageRep = [NSBitmapImageRep imageRepWithData: [[contentView screenshot:NSMakeSize(100,75)] TIFFRepresentation]]; 
    431         NSData *data = [bitmapImageRep representationUsingType: NSPNGFileType properties: nil]; 
    432         [data writeToFile: [NSString stringWithFormat: @"%@/thumbnail.png", pcPath] atomically: YES]; 
    433  
    434         /* save VM */ 
    435 //      qemu_savevm( [[NSString stringWithFormat: @"%@/saved.vm", pcPath] cString]); 
    436         do_savevm([@"kju" cString]); 
    437          
    438         /* hide progressWindow */ 
    439         [progressWindow hideProgressWindow]; 
     421//  NSLog(@"cocoaQemu: saveVM"); 
     422 
     423    /* show progressWindow */ 
     424    [progressWindow showProgressWindow:pcWindow text: NSLocalizedStringFromTable(@"saveVM:text", @"Localizable", @"cocoaQemu") name:pcName]; 
     425 
     426    /* stop VM */ 
     427    vm_stop(0); 
     428 
     429    /* generate Preview */ 
     430    NSBitmapImageRep *bitmapImageRep = [NSBitmapImageRep imageRepWithData: [[contentView screenshot:NSMakeSize(100,75)] TIFFRepresentation]]; 
     431    NSData *data = [bitmapImageRep representationUsingType: NSPNGFileType properties: nil]; 
     432    [data writeToFile: [NSString stringWithFormat: @"%@/thumbnail.png", pcPath] atomically: YES]; 
     433 
     434    /* save VM */ 
     435    do_savevm([@"kju" cString]); 
     436 
     437    /* hide progressWindow */ 
     438    [progressWindow hideProgressWindow]; 
    440439} 
    441440 
    442441- (void) closeProgressWindow 
    443442{ 
    444 //     NSLog(@"cocoaQemu: closeProgressWindow"); 
    445          
    446        if (vm_running) { 
    447                [progressWindowTimer invalidate]; 
    448                [progressWindow hideProgressWindow]; 
    449                  
    450        
     443//  NSLog(@"cocoaQemu: closeProgressWindow"); 
     444     
     445    if (vm_running) { 
     446        [progressWindowTimer invalidate]; 
     447        [progressWindow hideProgressWindow]; 
     448         
     449   
    451450} 
    452451 
     
    454453- (void) startPCWithArgs:(id)arguments 
    455454{ 
    456 //      NSLog(@"cocoaQemu: startPCWithArgs"); 
    457  
    458         NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    459          
    460         /* overrun defaults for bios_dir, so we can run qemu everywhere */ 
    461         bios_dir = [[NSString stringWithFormat:@"%@/qemu", [[NSBundle mainBundle] resourcePath]] cString]; 
    462  
    463         /* setup QEMU Window */ 
    464         pcWindow = [[cocoaQemuWindow  alloc] initWithSender:self]; 
    465         if ([arguments containsObject:@"-cocoaquickdraw"]) { 
    466                 contentView = [[[cocoaQemuQuickDrawView alloc] initWithFrame:NSMakeRect(0,0,640,400) sender:self] autorelease]; 
    467         } else if ([arguments containsObject:@"-cocoaquartz"]) { 
    468                 contentView = [[[cocoaQemuQuartzView alloc] initWithFrame:NSMakeRect(0,0,640,400) sender:self] autorelease]; 
    469         } else { 
    470                 contentView = [[[cocoaQemuOpenGLView alloc] initWithFrame:NSMakeRect(0,0,640,400) sender:self] autorelease]; 
    471         } 
    472          
    473         [contentView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; 
    474          
    475         /* scrollview */ 
    476 /*      NSScrollView * scrollView = [[NSScrollView alloc] init]; 
    477         [scrollView setHasVerticalScroller:TRUE]; 
    478         [scrollView setHasHorizontalScroller:TRUE]; 
    479         [scrollView setAutohidesScrollers:FALSE]; 
    480         [scrollView setScrollsDynamically:TRUE]; // 
    481         [scrollView setBorderType:NSLineBorder]; 
    482         [scrollView setDocumentView:contentView]; 
    483         [pcWindow setContentView:scrollView];*/ 
    484  
    485          
    486         [pcWindow setContentView:contentView]; 
    487         [pcWindow setMyContentView:contentView]; 
    488  
    489         /* filter cocoa arguments */ 
    490         int i; 
    491         int i2 = 0; 
    492         char **argv2 = (char**)malloc( sizeof(char*)*[arguments count] ); 
    493  
    494         for (i = 0; i < [arguments count]; i++) { 
    495 //              NSLog(@"Arguments: %@", [arguments objectAtIndex:i]); 
    496                  
    497                 if ( [[arguments objectAtIndex:i] isEqual:@"-cocoaquickdraw"] ) { 
    498                         pcOpenGLView = false; 
    499                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoaquartz"] ) { 
    500                         pcOpenGLView = false; 
    501                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoaname"] ) { 
    502                         i++; 
    503                         pcName = [arguments objectAtIndex:i]; 
    504                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoawindowname"] ) { 
    505                         i++; 
    506                         pcWindowName = [arguments objectAtIndex:i]; 
    507                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoapath"] ) { 
    508                         i++; 
    509                         pcPath = [arguments objectAtIndex:i]; 
    510                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoalivethumbnail"] ) { 
    511                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoanodialogs"] ) { 
    512                         pcDialogs = NO; 
    513                         NSLog(@"pcDialogs: %d\n", pcDialogs); 
    514                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-wmstopwheninactive"] ) { 
    515                         WMStopWhenInactive = true; 
    516                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-full-screen"] ) { 
    517                         fullscreen = [contentView toggleFullScreen]; 
    518                 } else if ( [[arguments objectAtIndex:i] isEqual:@"-cdrom"] ) { 
    519                         if ( [[arguments objectAtIndex:i+1] isEqual:@"/dev/cdrom"] ) { 
    520                                 kern_return_t kernResult; 
    521                                 io_iterator_t mediaIterator; 
    522                                 char bsdPath[MAXPATHLEN]; 
    523                                  
    524                                 kernResult = FindEjectableCDMedia( &mediaIterator ); 
    525                                 kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) ); 
    526                                  
    527                                 if ( bsdPath[0] == '\0' ) { 
    528                                         i++; 
    529                                 } else { 
    530                                         asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
    531                                         i2++; 
    532                                         i++; 
    533                                         asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
    534                                         i2++; 
    535                                 } 
    536                                  
    537                                 if ( mediaIterator ) 
    538                                         IOObjectRelease( mediaIterator ); 
    539                         } else { 
    540                                 asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
    541                                 i2++; 
    542                                 i++; 
    543                                 asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
    544                                 i2++; 
    545                         } 
    546                 } else { 
    547                         if ([[arguments objectAtIndex:i] isEqual:@"-smb"]) 
    548                                 smbPath = [[NSString alloc] initWithString:[arguments objectAtIndex:i + 1]]; 
    549                          
    550                         if ([[arguments objectAtIndex:i] isEqual:@"-hda"]) 
     455//  NSLog(@"cocoaQemu: startPCWithArgs"); 
     456 
     457    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
     458 
     459    /* overrun defaults for bios_dir, so we can run qemu everywhere */ 
     460    bios_dir = [[NSString stringWithFormat:@"%@/qemu", [[NSBundle mainBundle] resourcePath]] cString]; 
     461 
     462    /* setup QEMU Window */ 
     463    pcWindow = [[cocoaQemuWindow  alloc] initWithSender:self]; 
     464    if ([arguments containsObject:@"-cocoaquickdraw"]) { 
     465        contentView = [[[cocoaQemuQuickDrawView alloc] initWithFrame:NSMakeRect(0,0,640,400) sender:self] autorelease]; 
     466    } else if ([arguments containsObject:@"-cocoaquartz"]) { 
     467        contentView = [[[cocoaQemuQuartzView alloc] initWithFrame:NSMakeRect(0,0,640,400) sender:self] autorelease]; 
     468    } else { 
     469        contentView = [[[cocoaQemuOpenGLView alloc] initWithFrame:NSMakeRect(0,0,640,400) sender:self] autorelease]; 
     470    } 
     471    [contentView setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; 
     472 
     473    /* scrollview */ 
     474/*  NSScrollView * scrollView = [[NSScrollView alloc] init]; 
     475    [scrollView setHasVerticalScroller:TRUE]; 
     476    [scrollView setHasHorizontalScroller:TRUE]; 
     477    [scrollView setAutohidesScrollers:FALSE]; 
     478    [scrollView setScrollsDynamically:TRUE]; // 
     479    [scrollView setBorderType:NSLineBorder]; 
     480    [scrollView setDocumentView:contentView]; 
     481    [pcWindow setContentView:scrollView];*/ 
     482 
     483     
     484    [pcWindow setContentView:contentView]; 
     485    [pcWindow setMyContentView:contentView]; 
     486 
     487    /* filter cocoa arguments */ 
     488    int i; 
     489    int i2 = 0; 
     490    char **argv2 = (char**)malloc( sizeof(char*)*[arguments count] ); 
     491 
     492    for (i = 0; i < [arguments count]; i++) { 
     493//      NSLog(@"Arguments: %@", [arguments objectAtIndex:i]); 
     494         
     495        if ( [[arguments objectAtIndex:i] isEqual:@"-cocoaquickdraw"] ) { 
     496            pcOpenGLView = false; 
     497        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoaquartz"] ) { 
     498            pcOpenGLView = false; 
     499        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoaname"] ) { 
     500            i++; 
     501            pcName = [arguments objectAtIndex:i]; 
     502        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoawindowname"] ) { 
     503            i++; 
     504            pcWindowName = [arguments objectAtIndex:i]; 
     505        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoapath"] ) { 
     506            i++; 
     507            pcPath = [arguments objectAtIndex:i]; 
     508        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoalivethumbnail"] ) { 
     509        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cocoanodialogs"] ) { 
     510            pcDialogs = NO; 
     511            NSLog(@"pcDialogs: %d\n", pcDialogs); 
     512        } else if ( [[arguments objectAtIndex:i] isEqual:@"-wmstopwheninactive"] ) { 
     513            WMStopWhenInactive = true; 
     514        } else if ( [[arguments objectAtIndex:i] isEqual:@"-full-screen"] ) { 
     515            fullscreen = [contentView toggleFullScreen]; 
     516        } else if ( [[arguments objectAtIndex:i] isEqual:@"-cdrom"] ) { 
     517            if ( [[arguments objectAtIndex:i+1] isEqual:@"/dev/cdrom"] ) { 
     518                kern_return_t kernResult; 
     519                io_iterator_t mediaIterator; 
     520                char bsdPath[MAXPATHLEN]; 
     521                 
     522                kernResult = FindEjectableCDMedia( &mediaIterator ); 
     523                kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) ); 
     524                 
     525                if ( bsdPath[0] == '\0' ) { 
     526                    i++; 
     527                } else { 
     528                    asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
     529                    i2++; 
     530                    i++; 
     531                    asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
     532                    i2++; 
     533                } 
     534                 
     535                if ( mediaIterator ) 
     536                    IOObjectRelease( mediaIterator ); 
     537            } else { 
     538                asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
     539                i2++; 
     540                i++; 
     541                asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
     542                i2++; 
     543            } 
     544        } else { 
     545            if ([[arguments objectAtIndex:i] isEqual:@"-smb"]) 
     546                smbPath = [[NSString alloc] initWithString:[arguments objectAtIndex:i + 1]]; 
     547             
     548            if ([[arguments objectAtIndex:i] isEqual:@"-hda"]) 
    551549                if ([[arguments objectAtIndex:i+1] rangeOfString:@"qcow2"].length > 0) 
    552550                    WMSupportsSnapshots = TRUE; 
    553                        asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
    554                        i2++; 
    555                
    556        
    557          
    558 //     for (i = 0; i < i2; i++) 
    559 //             NSLog(@"Argv :%s\n", argv2[i]); 
    560          
    561        /* set window- and frameAutosaveName */ 
    562        [pcWindow setFrameAutosaveName: [NSString stringWithFormat:@"%@ - %@",pcWindowName, pcName]]; 
    563        [pcWindow setTitle: [NSString stringWithFormat:@"%@ - %@",pcWindowName, pcName]]; 
    564          
    565        /* show progressWindow */ 
    566        [progressWindow showProgressWindow:pcWindow text: NSLocalizedStringFromTable(@"startPCWithArgs:text", @"Localizable", @"cocoaQemu") name:pcName]; 
    567          
    568        /* register with Q distributed objects server */ 
    569        if (![qdoserver guestRegister: self withName:pcName]) { 
    570                [qdoserver release]; 
    571                qdoserver = nil; 
    572                NSLog(@"KO"); 
    573        
    574                  
    575        /* update status */ 
    576        pcStatus = @"running"; 
    577          
    578        /* hide progressWindow */ 
    579        progressWindowTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector( closeProgressWindow ) userInfo:nil repeats:YES]; 
    580          
    581        /* launch VM, QEMU is up and running here */ 
    582        qemu_main(i2, argv2); 
    583          
    584        /* remove pcWindow */ 
    585        [pcWindow close]; 
    586          
    587        [pool release]; 
    588          
    589        /* unregister with Q distributed objects server */ 
    590        if (![qdoserver guestUnregisterWithName:pcName]) { 
    591                NSLog(@"KO"); 
    592        
    593        [qdoserver release]; 
    594        qdoserver = nil; 
    595          
    596        /* saved: return 2, so qemu-control knows */ 
    597        if ([pcStatus isEqual:@"saved"]) { 
    598                exit(2); 
    599        } else { 
    600                [NSApp terminate:self]; 
    601        
     551            asprintf(&argv2[i2], "%s", [[arguments objectAtIndex:i] cString]); 
     552            i2++; 
     553       
     554   
     555     
     556//  for (i = 0; i < i2; i++) 
     557//      NSLog(@"Argv :%s\n", argv2[i]); 
     558 
     559    /* set window- and frameAutosaveName */ 
     560    [pcWindow setFrameAutosaveName: [NSString stringWithFormat:@"%@ - %@",pcWindowName, pcName]]; 
     561    [pcWindow setTitle: [NSString stringWithFormat:@"%@ - %@",pcWindowName, pcName]]; 
     562 
     563    /* show progressWindow */ 
     564    [progressWindow showProgressWindow:pcWindow text: NSLocalizedStringFromTable(@"startPCWithArgs:text", @"Localizable", @"cocoaQemu") name:pcName]; 
     565 
     566    /* register with Q distributed objects server */ 
     567    if (![qdoserver guestRegister: self withName:pcName]) { 
     568        [qdoserver release]; 
     569        qdoserver = nil; 
     570        NSLog(@"KO"); 
     571   
     572 
     573    /* update status */ 
     574    pcStatus = @"running"; 
     575 
     576    /* hide progressWindow */ 
     577    progressWindowTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector( closeProgressWindow ) userInfo:nil repeats:YES]; 
     578 
     579    /* launch VM, QEMU is up and running here */ 
     580    qemu_main(i2, argv2); 
     581 
     582    /* remove pcWindow */ 
     583    [pcWindow close]; 
     584 
     585    [pool release]; 
     586 
     587    /* unregister with Q distributed objects server */ 
     588    if (![qdoserver guestUnregisterWithName:pcName]) { 
     589        NSLog(@"KO"); 
     590   
     591    [qdoserver release]; 
     592    qdoserver = nil; 
     593 
     594    /* saved: return 2, so qemu-control knows */ 
     595    if ([pcStatus isEqual:@"saved"]) { 
     596        exit(2); 
     597    } else { 
     598        [NSApp terminate:self]; 
     599   
    602600} 
    603601 
    604602- (void) changeFda:(id)sender 
    605603{ 
    606 //     NSLog(@"cocoaQemu: changeFda"); 
    607  
    608                NSOpenPanel *op = [[NSOpenPanel alloc] init]; 
    609                [op setPrompt: NSLocalizedStringFromTable(@"changeFda:prompt", @"Localizable", @"cocoaQemu")]; 
    610                [op setMessage: NSLocalizedStringFromTable(@"changeFda:message", @"Localizable", @"cocoaQemu")]; 
    611                [op beginSheetForDirectory:nil 
    612                file:nil 
    613                types:fileTypes 
    614                modalForWindow:pcWindow 
    615                modalDelegate:self 
    616                didEndSelector:@selector(changeDeviceSheetDidEnd:returnCode:contextInfo:) 
    617                contextInfo:@"fda"]; 
     604//  NSLog(@"cocoaQemu: changeFda"); 
     605 
     606        NSOpenPanel *op = [[NSOpenPanel alloc] init]; 
     607        [op setPrompt: NSLocalizedStringFromTable(@"changeFda:prompt", @"Localizable", @"cocoaQemu")]; 
     608        [op setMessage: NSLocalizedStringFromTable(@"changeFda:message", @"Localizable", @"cocoaQemu")]; 
     609        [op beginSheetForDirectory:nil 
     610        file:nil 
     611        types:fileTypes 
     612        modalForWindow:pcWindow 
     613        modalDelegate:self 
     614        didEndSelector:@selector(changeDeviceSheetDidEnd:returnCode:contextInfo:) 
     615        contextInfo:@"fda"]; 
    618616} 
    619617 
    620618- (void) changeFdb:(id)sender 
    621619{ 
    622 //     NSLog(@"cocoaQemu: changeFdb"); 
    623  
    624   &