DRC,

Thanks for the update, sounds promising!

I have a snow leopard Mac mini at home, but I don't have a 10.6 test
machine / VM at work - I'll try to get a 10.6 VM set up on my work
laptop ASAP, so that I can more easily test how to detect lack of
full-screen functionality in Java Swing.

Cheers,
James


On 24/02/2013, at 8:53 PM, DRC <dcomman...@users.sourceforge.net> wrote:

> I was able to get funding to implement this and have been working on it
> over the past few days (most of that work involved upgrading my
> development machine to Mountain Lion and then setting up a Snow Leopard
> VM for backward compatibility testing.)  The implementation is almost as
> simple as you said, because in fact the Apple full-screen mode seems to
> take care of a lot of the logic (re-creating scrollbars, remembering the
> non-full-screen window position, etc.) that we were doing ourselves in
> the TurboVNC code.
>
> I've run into one setback, though.  Because the methods in
> com.apple.eawt.FullScreenUtilities behave normally but "do nothing" on
> Snow Leopard and prior, as opposed to throwing an exception, and because
> those methods do not provide any return value or other state, there is
> no way to determine whether or not the system actually supports the
> full-screen extensions.  This is important because, on Snow Leopard and
> prior, the TurboVNC Viewer still needs to use the old emulated
> full-screen mode (it has its limitations, but it's at least usable if
> you have your dock set to auto-hide.)
>
> I could check os.version and assume that if it's >= 10.7, the
> full-screen extensions should be used, but this seems error-prone.
>
> Hoping you may have some insight, because I'm stumped.  I even thought
> of perhaps using the full-screen listener, which is set up anyway so I
> can change the state of the menu check boxes, but since the listener is
> fired asynchronously, there is no way of knowing whether its failure to
> fire is due to the extensions being unavailable or whether it simply
> hasn't gotten around to it yet.
>
> So frustrating.
>
> On 2/20/13 11:04 PM, James Wettenhall wrote:
>> DRC,
>>
>> Thanks for your reply, and thanks for all of the hard work that's gone
>> into TurboVNC 1.2 beta1.  :-)
>>
>> On 21/02/2013, at 1:54 PM, DRC wrote:
>>
>>> Gee, thanks, Apple.  Any idea what other open source projects are doing
>>> to work around this?
>>
>> No.  I only came across it recently.  But Oracle's guidelines for
>> packaging a Java App for Distribution on a Mac mention the need for
>> code-signing:
>>
>> http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/packagingAppsForMac.html
>>
>> It's frustrating that Apple, OpenJDK and Oracle are taking so long to
>> sort out the transition from Apple supplying Java Runtime Environments
>> to Oracle supplying them.  The Apple-supplied JRE is based on Java 1.6
>> which is supposed to reach its end of life this month.  The recommended
>> approach is now to bundle a JRE into your application, but if you bundle
>> Oracle's binary JRE, then your application can't be GPL, i.e. you need to
>> build OpenJDK from source to make it GPL.
>>
>>>> com.apple.eawt.Application.getApplication().requestToggleFullScreen(turboVncViewport);
>>>
>>> Where are you calling that function?  Presumably, it should go in
>>> CConn.recreateViewport().
>>
>> Not from any existing TurboVNC class.  We had a go at rewriting our
>> application in Java Swing, instead of wxPython so we could do stuff
>> like full-screen ourselves without having to bug you.  But that has been
>> put on hold for now, maybe indefinitely, i.e. we're returning to our
>> wxPython GUI development which calls TurboVNC using
>> command-line arguments.  I can point you to our Java code if you like.
>>
>> Our approach was that once the VNC viewport was visible, we wouldn't
>> promise to support any of the interactive functionality of TurboVNC
>> (pop-up dialogs etc.) in full-screen mode.  All we did was add the
>> full-screen button to the window's title bar, so that users could toggle
>> full-screen mode themselves.  Then they could use built-in Mac OS X
>> functionality, e.g. a 3-finger swipe on a track-pad to switch between
>> their Mac Desktop and their VNC Desktop, which some of them
>> thought was pretty cool.
>>
>>> -- When requesting full-screen mode through the app, it will call
>>> Application.requestToggleFullScreen() if that function is available
>>> (determining whether it's available in a manner that will still compile
>>> on non-Mac platforms is tricky.  It requires using Reflect.)
>>
>> Yes, understood.
>>
>>> -- Presumably, the app needs to also call setWindowCanFullScreen() on
>>> the Viewport when it is created.
>>
>> Yes, after checking for OS version.
>>
>>> -- Ideally, the app would also need to trap the full-screen events so
>>> that, when the full-screen gadget is used, it will resize the viewport
>>> properly and correctly set the full-screen state, etc.
>>
>> Catching the events isn't too difficult (apart for the Reflect stuff), but
>> implementing the event-handlers nicely wouldn't be trivial.
>>
>> In our proof-of-concept, we didn't provide any support for altering the
>> geometry of an existing VNC session.  Our app detects the client
>> resolution to determine the default VNC geometry, and then gives the
>> user the option to overwrite it within our GUI before creating the VNC
>> session using an SSH API.  If you're talking about client-side
>> auto-scaling, then the user-instigated full-screen mode will trigger
>> a resize event which can be detected with a ComponentListener
>>
>>> I'm afraid it's just too complicated for me to do pro bono.  If one of
>>> my customers runs into this issue, perhaps they will be interested in
>>> funding it.
>>
>> Understood.  Thanks for explaining the difficulties.  It sounds like this
>> will end up in the too-hard basket for now, because we can't offer to
>> sponsor its development.
>>
>> If by some miracle, I think of an easy work-around to the difficulties
>> you have raised, and have time to submit a code offering and a test
>> plan for it, I'll let you know.  :-)
>>
>> All the best,
>> James
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Everyone hates slow websites. So do we.
>> Make your web apps faster with AppDynamics
>> Download AppDynamics Lite for free today:
>> http://p.sf.net/sfu/appdyn_d2d_feb
>>
>>
>>
>> _______________________________________________
>> VirtualGL-Devel mailing list
>> VirtualGL-Devel@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/virtualgl-devel
>>
>
> ------------------------------------------------------------------------------
> Everyone hates slow websites. So do we.
> Make your web apps faster with AppDynamics
> Download AppDynamics Lite for free today:
> http://p.sf.net/sfu/appdyn_d2d_feb
> _______________________________________________
> VirtualGL-Devel mailing list
> VirtualGL-Devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/virtualgl-devel

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
VirtualGL-Devel mailing list
VirtualGL-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtualgl-devel

Reply via email to