qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Fixes several full screen issues on Mac OS X


From: Peter Maydell
Subject: Re: [Qemu-devel] [PATCH] Fixes several full screen issues on Mac OS X
Date: Wed, 14 Jan 2015 17:19:01 +0000

On 4 January 2015 at 23:44, Programmingkid <address@hidden> wrote:
> This patch makes several changes:
> - Fixes issue of returning to window mode and QEMU not setting
>  the right graphic settings if there was a change during full screen mode.
> - Eliminated distorted full screen display.
> - Makes full screen mode available on Mac OS 10.7 and higher.
> - Removes unneeded global variables cdx, and cdy.
> - Changes a few comments to make them clearer.
>
> Signed-off-by: John Arbuckle <address@hidden>

I'm afraid this patch is badly broken for me.

(1) If I go into full screen then I can't get out again because the
menubar isn't displayed even when I use ctrl+alt to release the
mouse grab. I have to use my second monitor to get at the Dock so I
can kill QEMU.

(2) Having done this I find that all my other application windows
have been squashed down into a corner of my screen, presumably because
we've told MacOSX "the screen is 640x480" and it's rearranged the
app windows to suit. We mustn't mess things up like this.

(3) I managed to get at the underlying "QEMU" window with its title
bar somehow even when in full screen mode: I could move it about the
screen with the mouse...

(4) I get a lot of compile warnings for this patch:

  OBJC  ui/cocoa.o
/Users/pm215/src/qemu/ui/cocoa.m:790:24: warning:
'CGDisplayCurrentMode' is deprecated: first deprecated in OS X 10.6
      [-Wdeprecated-declarations]
    window_mode_dict = CGDisplayCurrentMode(kCGDirectMainDisplay);
                       ^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:455:27:
note: 'CGDisplayCurrentMode' has been explicitly
      marked deprecated here
CG_EXTERN CFDictionaryRef CGDisplayCurrentMode(CGDirectDisplayID display)
                          ^
/Users/pm215/src/qemu/ui/cocoa.m:790:22: warning: incompatible pointer
types assigning to 'NSDictionary *' from 'CFDictionaryRef'
      (aka 'const struct __CFDictionary *') [-Wincompatible-pointer-types]
    window_mode_dict = CGDisplayCurrentMode(kCGDirectMainDisplay);
                     ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/pm215/src/qemu/ui/cocoa.m:796:5: warning:
'CGDisplaySwitchToMode' is deprecated: first deprecated in OS X 10.6
      [-Wdeprecated-declarations]
    CGDisplaySwitchToMode(kCGDirectMainDisplay, window_mode_dict);
    ^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:460:19:
note: 'CGDisplaySwitchToMode' has been explicitly
      marked deprecated here
CG_EXTERN CGError CGDisplaySwitchToMode(CGDirectDisplayID display,
                  ^
/Users/pm215/src/qemu/ui/cocoa.m:796:49: warning: incompatible pointer
types passing 'NSDictionary *' to parameter of type
      'CFDictionaryRef' (aka 'const struct __CFDictionary *')
[-Wincompatible-pointer-types]
    CGDisplaySwitchToMode(kCGDirectMainDisplay, window_mode_dict);
                                                ^~~~~~~~~~~~~~~~
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:461:19:
note: passing argument to parameter 'mode' here
  CFDictionaryRef mode) CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_6,
                  ^
/Users/pm215/src/qemu/ui/cocoa.m:804:20: warning: incompatible pointer
types initializing 'NSDictionary *' with an expression of type
      'CFDictionaryRef' (aka 'const struct __CFDictionary *')
[-Wincompatible-pointer-types]
  ...* mode = CGDisplayBestModeForParameters(kCGDirectMainDisplay,
desired_bit_depth, (size_t)cw, (size_t)ch, &exact_match);
       ^      
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/pm215/src/qemu/ui/cocoa.m:804:27: warning:
'CGDisplayBestModeForParameters' is deprecated: first deprecated in OS
X 10.6
      [-Wdeprecated-declarations]
    NSDictionary * mode =
CGDisplayBestModeForParameters(kCGDirectMainDisplay,
desired_bit_depth, (size_t)cw, (size_t)ch, &ex...
                          ^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:442:27:
note: 'CGDisplayBestModeForParameters' has been
      explicitly marked deprecated here
CG_EXTERN CFDictionaryRef CGDisplayBestModeForParameters(CGDirectDisplayID
                          ^
/Users/pm215/src/qemu/ui/cocoa.m:807:9: warning:
'CGDisplaySwitchToMode' is deprecated: first deprecated in OS X 10.6
      [-Wdeprecated-declarations]
        CGDisplaySwitchToMode(kCGDirectMainDisplay, mode);
        ^
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:460:19:
note: 'CGDisplaySwitchToMode' has been explicitly
      marked deprecated here
CG_EXTERN CGError CGDisplaySwitchToMode(CGDirectDisplayID display,
                  ^
/Users/pm215/src/qemu/ui/cocoa.m:807:53: warning: incompatible pointer
types passing 'NSDictionary *' to parameter of type
      'CFDictionaryRef' (aka 'const struct __CFDictionary *')
[-Wincompatible-pointer-types]
        CGDisplaySwitchToMode(kCGDirectMainDisplay, mode);
                                                    ^~~~
/System/Library/Frameworks/CoreGraphics.framework/Headers/CGDirectDisplay.h:461:19:
note: passing argument to parameter 'mode' here
  CFDictionaryRef mode) CG_AVAILABLE_BUT_DEPRECATED(__MAC_10_0, __MAC_10_6,
                  ^
8 warnings generated.

(5) checkpatch also complains about trailing whitespace:

ERROR: trailing whitespace
#97: FILE: ui/cocoa.m:420:
+        ch = screen.height;        $

ERROR: trailing whitespace
#133: FILE: ui/cocoa.m:448:
+            it is the solution that works. I spent a long time looking $

ERROR: trailing whitespace
#223: FILE: ui/cocoa.m:950:
+because Mac OS 10.7 and higher disables it. This is because of the $

total: 3 errors, 0 warnings, 223 lines checked


>  - (void) switchSurface:(DisplaySurface *)surface
>  {
>      COCOA_DEBUG("QemuCocoaView: switchSurface\n");
> -
>      int w = surface_width(surface);
>      int h = surface_height(surface);
> -    /* cdx == 0 means this is our very first surface, in which case we need
> -     * to recalculate the content dimensions even if it happens to be the 
> size
> -     * of the initial empty window.
> -     */
> -    bool isResize = (w != screen.width || h != screen.height || cdx == 0.0);
> -
> +    bool isResize = (w != screen.width || h != screen.height);

(6) This looks like you've just dropped a bug fix. How are you
dealing with this case if not by the method described in the
now-deleted comment?

thanks
-- PMM



reply via email to

[Prev in Thread] Current Thread [Next in Thread]