[Vm-dev] Removing most of the windowing code

Ronie Salgado roniesalg at gmail.com
Thu Nov 24 07:12:51 UTC 2016


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:

- 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.

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;
}

In DisplayScreen class >> startUp we have the following:
startUp  "DisplayScreen startUp"
    Display setExtent: self actualScreenSize depth: Display nativeDepth.
    Display beDisplay

Does it make sense, to always trying to create a display in startup time?

Best regards,
Ronie
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20161124/d559e9a9/attachment.html>


More information about the Vm-dev mailing list