[Vm-dev] [OpenSmalltalk/opensmalltalk-vm] 5afa7a: Fix travis tests for squeak after app rename

Tobias Pape Das.Linux at gmx.de
Sat Jul 8 07:47:01 UTC 2017


Hi All, Hi Eliot

I'm sorry for being a drag on progress here…
[Also, replying to HTML-Mails messes up the quotes somehow… can we not use html? :/ but I digress already…]

> On 15.06.2017, at 20:05, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> 
> Hi Tobias,
> 
> On Thu, Jun 15, 2017 at 6:50 AM, Tobias Pape <Das.Linux at gmx.de> wrote:
> 
> 
> > On 13.06.2017, at 16:06, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> >
> >
> >
> >
> >> On Jun 13, 2017, at 4:38 AM, Tobias Pape <Das.Linux at gmx.de> wrote:
> >>
> >>
> >> Any objections I merge this into Cog?
> >
> > Provided the changes are optional so that the default behaviour is unchanged then no objections from me.
> 
> That's a stretch… So here's the thing:
> 
> - Opting in to highdpi ist typically necessary very early in a process startup
>   (at least when you want to stay platform-independend)
> 

[]
> Which is why on Mac we can use a setting from Info.plist.  Windows is already covered.  When the issue becomes relevant in Linux we could use
> - an environment variable
> - an ini file, e.g. in the lib dir
> - a command line switch set in the launch script

Yes.

> 
>  
> - For our vm that means, the image cannot simply use a primitive to say, hey I'm high-dpi ready
>   in order to change that later.
> 
> Understood.  That's not what I'm talking about.

OK.

>  
> - We _can_ typically control the behavior via vm-specific files (Info.plist/ .exe.manifest)
> - So, to avoid surprises because the image may not yet react to highdpi or dpi changes,
>   the default vms should come with high-dpi off.
> - but When we add the code soon-ish, we could switch-on by default for the next image format change that would
>   nevertheless need a new vm. This would be *drummroll* sista.
> 
> So what I propose is:
> - Trunk receives code updates to handle high-dpi changes very soon (i got stuff in the pipeline but not yet fully ready)
> - Cog remains low-dpi (except people opt *in* the _vm_ via files)
> - Sista becomes high-dpi-aware (except people opt *out* the _vm_ via files)
> 

[]
> All of that is fine policy, but none of it addresses the implementation, which must
> - not change the default behavior
> - hence select hide via some suitable mechanism.  On Mac that means a setting in Info.plist.  Hell, there might even be a standard Mac option.  e.g. from http://blog.qt.io/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/
> 
>     Enabling high-dpi for OS X Applications
> 
>     High DPI mode is controlled by the following keys in the Info.Plist file:
> 
>     <key>NSPrincipalClass</key>
>     <string>NSApplication</string>
>     <key>NSHighResolutionCapable</key>
>     <string>True</string> 
> 
> So please, let's make sure that the VM continues to function unchanged for existing images.
> 

Ok. So what happens is that I have these exact lines in my commits:
https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/77b57ad8decb1a5835baa23405057b72bdf39db7#diff-e6a3e805182bc4de3d9ba3acdcf20c4dR380
(and so forth…)

For now this all would be _enabled_ was this stuff being merged, which I understand does not meet your criteria of "not change the default behavior"

It is however hard to go forward without having a clear breakpoint. 
- There's no way for VM and image to communicate the hi-dpi-capablitiy without it being default-enabled in the VM. 
  it is simply not enable-able at runtime (without extraordinary effort) nor disable-able at runtime (without fairly-more-than-ordianry effort).
- Telling users to "please edit this file which actually belongs somewhat to the vm" is a no-go, I'd say…

Thats why I'm proposing:

- Have the High-DPI-VM-Switch DISABLED for:
	* newspeak.cog.spur
	* newspeak.stack.spur
	* pharo.cog.spur
	* pharo.cog.spur.lowcode
	* pharo.stack.spur
	* pharo.stack.spur.lowcode
	* squeak.cog.spur
	* squeak.cog.spur+immutability
	* squeak.cog.v3
	* squeak.stack.spur
	* squeak.stack.v3
- Have the High-DPI-VM-Switch ENABLED for:
	* squeak.sista.spur

So, since sista requires an Image-format-chage, this could _at the same time_ communicate that image and vm know there's HighDPI.

In any case, changing the info.plist/manifest[1] would be possible for eg, people like us at HPI when producing custom All-in-ones.

So, does that meet your criteria? if not, I'm a bit lost…

HTH

best regards
	-Tobias

> 
> This would need only few changes to the code base.
> 
> Eliot, what's newspeak's stance on high-dpi?
> 
> Don't know.  I'm sure they'll be happy to follow our lead.
> 
>  
> 
> Best regards
>         -Tobias
> 
> 
> 
> >
> >>
> >> Adds High-dpi for windows and mac.
> >>

[1]: that manifest thing is funny :( So, at some point mignw/cygwin crew decided to _always_ compile a mingw-specific manifest _into the binary_.
	Which means that a custom manifest will not be used.
	Which means, since its not possible to not use that manifest in a normal way, we have to do trickery like that: 
	https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/c07df4f3a4c3b5bceeecbe8ee1e5a0e9d26eb9c5


More information about the Vm-dev mailing list