On 14/07/2012 12:23 AM, Mike Swingler wrote:
On Jul 13, 2012, at 6:22 AM, Anthony Petrov<anthony.pet...@oracle.com>  wrote:
On 7/13/2012 5:09 PM, David Holmes wrote:
On 13/07/2012 10:58 PM, Anthony Petrov wrote:

I dug into the code history a little. The following Mike's changeset is
"to blame" for using HToolkit in headless mode on the Mac:

http://hg.openjdk.java.net/macosx-port/macosx-port/jdk/rev/67591b2326bf

I've looked through the LWCToolkit.m which implements native methods
specific to the real, headful Mac toolkit, and actually all of the code
seems to be related to headful behavior only.

Note that in the headless mode the awt_LoadLibrary.c will still load the
correct lwawt dynamic native library, so all the necessary steps to
initialize the app from Mac OS X perspective will be performed anyway,
and all the native methods required by CFontManager and other C* classes
will be available also.

So basically I don't really see a problem with using the HToolkit class
for headless mode on the Mac. Note that Toolkit.getDefaultToolkit() will
wrap the real toolkit instance into a HeadlessToolkit class anyway, so
code that relies on instanceof checks against a toolkit instance should
not be affected by this choice in any way.

David, do you see any specific issues with using HToolkit on a desktop
(Mac) system?

No. I'm just wary of it. I'm curious what would have been done if this HToolkit 
class had not existed?

Either it would have been introduced, or the LWCToolkit/LWToolkit classes would have been 
made "more headless-aware," so to speak. I think Mike could shed some light on 
his decision.

I was looking for a way to ensure that once the choice to be headless was made, there would be no 
way to undo it. We've had problems in Java SE 6 and prior where the old CToolkit was "mostly 
headless", but could still try to make contact to the window server for somethings (edge cases 
in fonts, IIRC). This would "mostly work" for a while under an SSH session, but would die 
some hours later after Mach bootstrap session expired, and lead to diagnosing some fairly 
frustrating bugs.

With HToolkit, the boot comes down immediately about what you can and cannot do 
- and the implementation looked simple enough, I didn't see much risk. It was 
there, it worked, I went with it.

Anyway, to conclude the reviewing thread, given that we don't (currently) see 
any problems with using HToolkit on the Mac, and the fact that it's already 
been used in headless mode on the Mac for a while, I'm fine with the fix 
proposed by Leonid.

I personally don't see why HToolkit couldn't be used unilaterally for headless 
mode on all platforms. Wouldn't any breakage show an improper layering 
violation that should not have been allowed to occur in the first place?

It was introduced for platforms with absolutely zero "graphics" related capabilities - not even libraries installed let alone hardware. The pre-existing "headless" toolkits still required some of this support for, as I recall, printing/font related things - which must still be supported even in headless mode. As long as this is passing the full set of TCK/JCK tests then it is usable.

David
-----

Regards,
Mike Swingler
Apple Inc.

Reply via email to