Alex - thanks for your response.  More below...

On 6/13/16 4:51 PM, Alex Strange wrote:
2. In "setupMacOSXLocale" we simply drop the call to
"JRSSetDefaultLocalization" as it appears to be a NOP. According to
Apple, that API sets up native bundle locale, so that any access to
native Cocoa UI (like FileOpenChooser) uses localized strings.
Testing shows that this does not seem to work even in Apple's own
JDK (ie. JDK 6), so dropping the call to this SPI here does not
result in a regression.  An issue was filed to investigate further
(8024279, a dup of 8019464) which has since been closed as, "Not an
Issue".

This was added a very long time ago so that 'java -jar x.jar' would
show properly localized menus in the menubar, instead of English
menus, on a non-English system. It might no longer be a problem.

OK, thanks.

'java -jar x.jar' behavior is unchanged with this patch. (From the bug report, it hasn't worked since JDK 7).

3. In "setOSNameAndVersion", re-implement JRSCopyOSVersion using
[NSProcessInfo operatingSystemVersion].  (Use of JRSCopyOSName was
already removed by 7178922).

You shouldn't need to use objc_msgSend_stret here. If you're not
getting a warning when you use @selector in the line above, you
should just be able to call -operationgSystemVersion directly inside
the if.

If you are getting a warning, it'd be best to declare the selector
yourself somewhere higher up:

typedef struct {
        NSInteger majorVersion;
        NSInteger minorVersion;
        NSInteger patchVersion;
} OSVerStruct;

@interface NSProcessInfo ()
- (OSVerStruct)operatingSystemVersion;
@end

Thanks - this works for building w/ the 10.9 SDK (the officially supported Mac SDK for building JDK).

But I believe people also build w/ the 10.10 SDK (I've not tried it myself). Won't this cause problems, since NSProcessInfo already has "operatingSystemVersion", and it returns an NSOperatingSystemVersion, not an OSVerStruct ?

I'd prefer something that can build on SDK 10.9 and 10.10, etc. Once the official build moves to 10.10/later, objc_msgSend() can be removed and we can use [NSProcessInfo operatingSystemVersion] directly.

Thanks,
-Brent

Reply via email to