[Vm-dev] Removing most of the windowing code

Denis Kudriashov dionisiydk at gmail.com
Thu Nov 24 08:59:12 UTC 2016


2016-11-24 8:12 GMT+01:00 Ronie Salgado <roniesalg at gmail.com>:

> Hello,
> I am working on removing most of windowing code from the VM, and in trying
> to unify the platform specific code of the VM. In the MinimalistHeadless
> branch of https://github.com/ronsaldo/opensmalltalk-vm I made the
> following changes:

This is super cool. With Pavel we just tried open oswindow based world from
headless image and it work almost perfect. No problems with keyboard and
scrolling anymore. And it already provides very good approach for deploying
desktop app.

> - Unified standard CMake building scripts for Unixes. I hate autoconf. I
> want to use them in Windows too.
> - Refactoring the Unix entry points. I am trying to remove a lot of code
> for simplfying stuff.
> - Null window driver for true headless.
> - Optional SDL2 based traditional display backend for compatibility
> reasons, and because the extra Morphic worlds using OSWindow are a bit
> unstable.

Could you explain more what traditional display backend means? Because I am
probably out of domain but want to know more.

> So far I managed to run a standard Pharo 6 image using this custom VM in
> Linux. Windows and Mac are coming next. Hopefully this is going to fix the
> problems with duplicated events when using OSWindow in Windows.
> I am also planning on making a standard interface for embedding the VM in
> an application, at least as a static library. With this new building
> system, this seems to be easy to do.
> BTW. When I tried the minimalistic Pharo image, in a completely headless
> VM, I got the following error:
> [ "Ugh .... now this is a biggie - a system that does not support
>         any of the display depths at all."
> Smalltalk
>     logError:
>         'Fatal error: This system has no support for any display depth at
> all.'
>     inContext: thisContext.
> Smalltalk quitPrimitive    "There is no way to continue from here" ] in
> DisplayScreen>>findAnyDisplayDepth
> DisplayScreen>>findAnyDisplayDepthIfNone:
> DisplayScreen>>findAnyDisplayDepth
> DisplayScreen>>setExtent:depth:
> DisplayScreen class>>startUp
> As a workaround, I am doing the following for ioHasDisplayDepth with the
> null driver:
> sqInt ioHasDisplayDepth(sqInt depth)
> {
>     return true;
> }

I guess it is temp solution? Because no DisplayScreen should exist in
headless mode.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20161124/ab53d9c5/attachment-0001.html>

More information about the Vm-dev mailing list