Page 2 of 3
Re: Full screen resolutions
Posted: Wed Aug 15, 2012 12:08 pm
by Eric Walch
Confirmed on a 10.6 and a 10.5 machine after just making a new build. Both OS work as advertised in above messages with the known current limitations.
The 10.5 machine had still the problem that it did not see the path to the saved files and did not offer the option to load a new commander. Actually it must have known the path, as when I choose to load a file from the F2 screen, it immediately presented the right folder to my files which are not in the default place. Once having loaded a file, I got the offer to load a game on the next restart. So the problem was only initial. Strange still, as this is the computer I have full of Oolite version that never gave such a problem.
Re: Full screen resolutions
Posted: Fri Aug 17, 2012 7:43 pm
by JensAyton
As of r5192, full screen mode is once again partly supported in the 64-bit build. There is no full screen resolution setting; it will always run at the current system setting.
Features:
- Can access menu bar and dock in full-screen mode.
- Can command-tab out, use Spaces/Mission Control, etc. (Full-screen window hides when not frontmost application.)
- Can show JavaScript console, inspectors, help window etc. over game in full-screen mode.
- On multi-monitor systems, full screen mode will use the screen containing the largest portion of the non-full-screen window. (This can probably be back-ported to the 32-bit implementation quite easily.)
Missing:
- Mouse control. The mouse cursor is also visible at all times. My plan is to hide it in flight views and make it visible in other screens (and while paused) so you can get at menus, inspectors etc.
- Changing screen resolutions or adding/removing screens while in full screen mode is not handled gracefully yet. Switching out of full screen mode and back again will fix things.
- Some controls and behaviours may not work right because they expect the old full screen mode. Please report any oddities not listed here!
Re: Full screen resolutions
Posted: Sat Aug 18, 2012 8:23 am
by Eric Walch
Great having the console and inspectors visible in full screen mode.
Menu and doc also works on snow leopard.
I found one bug with mouse control when loading a game. I am pleased that the very invisible cross hair has changed into a proper pointer. But I can no longer select a file by clicking on a specific file. It always selects the same file no matter where I click.
Than I got an error during compile:
Code: Select all
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSnowLeopardFullScreenController.m:241:10: error: property 'opaque' not found on object of type 'OOFullScreenWindow *'
window.opaque = YES;
^
/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:494:1: note: or because setter is declared here, but no getter method 'opaque' is found
The same error also for
window.movable
. When I interpret this error correct, than these properties should be defined in the MacOSX10.7.sdk library. Is it possible that there are different versions of that library?
Now I just commenter out those 2 lines. (4 actually).
Re: Full screen resolutions
Posted: Sat Aug 18, 2012 8:41 am
by JensAyton
Eric Walch wrote:I found one bug with mouse control when loading a game. I am pleased that the very invisible cross hair has changed into a proper pointer. But I can no longer select a file by clicking on a specific file. It always selects the same file no matter where I click.
OK, that’s not very surprising (and the mouse doesn’t work in other UI screens either). I actually intend to use standard open/save panels in 64-bit full screen, but obviously the underlying issue needs to be fixed anyway.
Eric Walch wrote:Than I got an error during compile:
Code: Select all
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSnowLeopardFullScreenController.m:241:10: error: property 'opaque' not found on object of type 'OOFullScreenWindow *'
window.opaque = YES;
^
/Developer/SDKs/MacOSX10.7.sdk/System/Library/Frameworks/AppKit.framework/Headers/NSWindow.h:494:1: note: or because setter is declared here, but no getter method 'opaque' is found
The same error also for
window.movable
. When I interpret this error correct, than these properties should be defined in the MacOSX10.7.sdk library. Is it possible that there are different versions of that library?
Ah… this is because you’re using an older compiler which isn’t as clever about identifying implicit properties. It will recognise a method pair
-(T)foo
and
-(void)setFoo:(T)foo
as equivalent to a property
@property T foo
, but not the special case that
-(BOOL)isBar
and
-(void)setBar:(BOOL)bar
are equivalent to
@property (getter=isBar) BOOL bar
. I’ll switch to old syntax for those cases.
Re: Full screen resolutions
Posted: Sat Aug 18, 2012 1:45 pm
by JensAyton
As of r5200, mouse interaction now works (but mouse control doesn’t work well), and screen reconfigurations are handled gracefully.
Re: Full screen resolutions
Posted: Sun Aug 19, 2012 4:28 pm
by JensAyton
In r5211, changing full screen resolution while in full screen (32-bit only) works again. I’ve decided to keep 32-bit mode main-screen-only, because the way configuration is handled assumes there’s a single, static list of possible resolutions.
In other words, after a week and a half of tinkering, it works exactly like before for a small subset of users and is still half-broken for everyone else. See aforementioned lolcat. :-)
Re: Full screen resolutions
Posted: Sun Aug 19, 2012 8:32 pm
by Eric Walch
Not completely exact. In 32-bit mode on the Snow Leopard there must be a bug somewhere. On switching resolutions, Oolite crashed now 5 times out of 6 tries with my full oxp set installed. One time everything worked though. I got 2 completely different backtraces:
This one 2x
Code: Select all
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 org.aegidian.oolite 0x0011b703 CheckOpenGLErrors + 37 (OOOpenGL.m:47)
1 org.aegidian.oolite 0x000366f3 -[Universe drawUniverse] + 655 (Universe.m:3628)
2 org.aegidian.oolite 0x0004ec84 -[MyOpenGLView drawRect:] + 246 (MyOpenGLView.m:277)
3 org.aegidian.oolite 0x0004eb88 -[MyOpenGLView updateScreen] + 128 (MyOpenGLView.m:263)
4 org.aegidian.oolite 0x0000f9d0 -[GameController windowDidResize:] + 30 (GameController.m:796)
5 com.apple.Foundation 0x92605db3 _nsnote_callback + 176
6 com.apple.CoreFoundation 0x930ca763 __CFXNotificationPost + 947
7 com.apple.CoreFoundation 0x930ca16a _CFXNotificationPostNotification + 186
8 com.apple.Foundation 0x925fac50 -[NSNotificationCenter postNotificationName:object:userInfo:] + 128
9 com.apple.Foundation 0x9260805d -[NSNotificationCenter postNotificationName:object:] + 56
10 com.apple.AppKit 0x99bf9b09 -[NSWindow _setFrameCommon:display:stashSize:] + 2039
11 com.apple.AppKit 0x99bf930b -[NSWindow setFrame:display:] + 78
12 com.apple.AppKit 0x99c114e4 -[NSWindow _reallyDoOrderWindow:relativeTo:findKey:forCounter:force:isModal:] + 802
13 com.apple.AppKit 0x99c11161 -[NSWindow orderWindow:relativeTo:] + 105
14 com.apple.AppKit 0x99c0e90f -[NSWindow makeKeyAndOrderFront:] + 73
15 com.apple.AppKit 0x99c4a184 -[NSApplication _sendFinishLaunchingNotification] + 168
16 com.apple.AppKit 0x99da1339 -[NSApplication(NSAppleEventHandling) _handleAEOpen:] + 274
17 com.apple.AppKit 0x99da0f59 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 101
this one 3x
Code: Select all
Thread 0 Crashed: Dispatch queue: com.apple.main-thread
0 org.aegidian.oolite 0x0010d712 -[OOShaderProgram dealloc] + 15 (OOShaderProgram.m:152)
1 org.aegidian.oolite 0x0010b80a -[OOShaderMaterial dealloc] + 55 (OOShaderMaterial.m:275)
2 org.aegidian.oolite 0x00114618 -[OOMesh dealloc] + 149 (OOMesh.m:293)
3 com.apple.CoreFoundation 0x9307beb8 CFRelease + 152
4 com.apple.CoreFoundation 0x930a8bcd _CFAutoreleasePoolPop + 253
5 com.apple.Foundation 0x925f3976 NSPopAutoreleasePool + 76
6 com.apple.Foundation 0x925f47d2 -[NSAutoreleasePool release] + 130
7 org.aegidian.oolite 0x0000e8b5 -[GameController applicationDidFinishLaunching:] + 842 (GameController.m:263)
8 com.apple.Foundation 0x92605db3 _nsnote_callback + 176
9 com.apple.CoreFoundation 0x930ca763 __CFXNotificationPost + 947
10 com.apple.CoreFoundation 0x930ca16a _CFXNotificationPostNotification + 186
11 com.apple.Foundation 0x925fac50 -[NSNotificationCenter postNotificationName:object:userInfo:] + 128
12 com.apple.Foundation 0x9260805d -[NSNotificationCenter postNotificationName:object:] + 56
13 com.apple.AppKit 0x99c4a216 -[NSApplication _postDidFinishNotification] + 125
14 com.apple.AppKit 0x99c4a126 -[NSApplication _sendFinishLaunchingNotification] + 74
15 com.apple.AppKit 0x99da1339 -[NSApplication(NSAppleEventHandling) _handleAEOpen:] + 274
16 com.apple.AppKit 0x99da0f59 -[NSApplication(NSAppleEventHandling) _handleCoreEvent:withReplyEvent:] + 101
I see no clear relation with screen orientated stuff.
EDIT: And now I got the exact 1st backtrace again on switching from full screen to windowed mode.
Re: Full screen resolutions
Posted: Sun Aug 19, 2012 8:34 pm
by JensAyton
I’m going to guess the current GL context isn’t set properly at some point. :-/
Re: Full screen resolutions
Posted: Fri Aug 24, 2012 1:29 pm
by JensAyton
I haven’t forgotten the 32-bit issue, but I have ignored it to finish the next thing I was working on: the system-standard full screen mode is now supported in 10.7 or later, including the standard full screen button on the right end of the title bar.
On OS X 10.7 only, the slightly less fancy 10.6 mode is used if multiple monitors are in use (as determined when the game starts). This is because standard full screen mode always uses the main screen – the one with the menu bar – in 10.7. In 10.8, it uses whichever screen the window is on, just like in our 10.6 mode.
Re: Full screen resolutions
Posted: Sun Aug 26, 2012 11:30 am
by Eric Walch
In the new file you added ("OOMacSystemStandardFullScreenController.m"), my compiler has 4 complaints:
Code: Select all
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.m:46:30: error: use of undeclared identifier 'NSAppKitVersionNumber10_7'
if (NSAppKitVersionNumber < NSAppKitVersionNumber10_7)
^
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.m:53:38: error: expected identifier
NSString *override = [NSUserDefaults.standardUserDefaults stringForKey:@"full-screen-mode-override"];
^
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.m:60:37: error: use of undeclared identifier 'NSAppKitVersionNumber10_7'
if (floor(NSAppKitVersionNumber) > NSAppKitVersionNumber10_7)
^
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.m:92:9: error: unexpected '@' in program
return @[@{ kOODisplayWidth: @(size.width), kOODisplayWidth: @(size.height) }];
^
4 errors generated.
nr 1 and 3 are identical
nr 2 fixes when replacing '
NSUserDefaults.standardUserDefaults
' by '
[NSUserDefaults standardUserDefaults]
'
Re: Full screen resolutions
Posted: Sun Aug 26, 2012 11:42 am
by JensAyton
I’m surprised it isn’t more than that. Aren’t you building with the 10.6 SDK? OO_MAC_SUPPORT_SYSTEM_STANDARD_FULL_SCREEN
is supposed to exclude that class completely when you build it, see the header.
Re: Full screen resolutions
Posted: Sun Aug 26, 2012 11:58 am
by Eric Walch
Ahruman wrote:Aren’t you building with the 10.6 SDK?
Every time the project file file is updated, any old private settings are gone. It did show 'base SDK = Mac OS X 10.7'. But, even when I switch it back to 'base SDK = Mac OS X 10.6' and select 'Build active Architecture Only' I get the same 4 errors.
Re: Full screen resolutions
Posted: Sun Aug 26, 2012 12:16 pm
by JensAyton
In OOMacSystemStandardFullScreenController.h, change the bit that defines
OO_MAC_SUPPORT_SYSTEM_STANDARD_FULL_SCREEN
as follows. Which warnings show up?
Code: Select all
#if OOLITE_MAC_OS_X
#warning OOLITE_MAC_OS_X is true (as expected)
#if OOLITE_64_BIT
#warning OOLITE_MAC_OS_X is true (as expected)
#ifdef MAC_OS_X_VERSION_10_7
#warning OOLITE_MAC_OS_X is defined (NOT EXPECTED)
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
#warning MAC_OS_X_VERSION_MAX_ALLOWED >= 10.7 (NOT EXPECTED)
#define OO_MAC_SUPPORT_SYSTEM_STANDARD_FULL_SCREEN 1
#endif
#endif
#endif
#endif
Re: Full screen resolutions
Posted: Sun Aug 26, 2012 12:55 pm
by Eric Walch
Ahruman wrote:In OOMacSystemStandardFullScreenController.h, change the bit that defines OO_MAC_SUPPORT_SYSTEM_STANDARD_FULL_SCREEN
as follows. Which warnings show up?
I get with above change:
Code: Select all
In file included from /Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.m:26:
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.h:39:2: error: #warning OOLITE_MAC_OS_X is true (as expected) [-W#warnings]
#warning OOLITE_MAC_OS_X is true (as expected)
^
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.h:41:2: error: #warning OOLITE_MAC_OS_X is true (as expected) [-W#warnings]
#warning OOLITE_MAC_OS_X is true (as expected)
^
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.h:43:2: error: #warning OOLITE_MAC_OS_X is defined (NOT EXPECTED) [-W#warnings]
#warning OOLITE_MAC_OS_X is defined (NOT EXPECTED)
^
/Users/ericwalch/Oolite/trunk/src/Core/../Cocoa/OOMacSystemStandardFullScreenController.h:45:2: error: #warning MAC_OS_X_VERSION_MAX_ALLOWED >= 10.7 (NOT EXPECTED) [-W#warnings]
#warning MAC_OS_X_VERSION_MAX_ALLOWED >= 10.7 (NOT EXPECTED)
^
After a bit of searching, the
MAC_OS_X_VERSION_10_7
is defined in
availabilityMacros.h
and that file I find sitting in the MacOSX10.7.sdk folder.
So you are right that I am currently using those libraries. No idea were that is set.
Re: Full screen resolutions
Posted: Sun Aug 26, 2012 1:13 pm
by JensAyton
Try r5252.