<!DOCTYPE html><html><head>
<style type="text/css">body { font-family:'Helvetica'; font-size:12px}</style>
</head>
<body><div>This is super coooooool</div><div>Embedding the Vm as a static lib is a kind of dream becoming true.<br></div><div><br></div><div>Stef</div><div><br></div><br><blockquote style="margin: 0 0 0.80ex; border-left: #0000FF 2px solid; padding-left: 1ex"><div dir="ltr"><div><div><div><div><div><div><div><div>Hello,<br><br></div>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 <a href="https://github.com/ronsaldo/opensmalltalk-vm">https://github.com/ronsaldo/opensmalltalk-vm</a> I made the following changes:<br><br></div>- Unified standard CMake building scripts for Unixes. I hate autoconf. I want to use them in Windows too.<br></div>- Refactoring the Unix entry points. I am trying to remove a lot of code for simplfying stuff.<br></div>- Null window driver for true headless.<br></div>- Optional SDL2 based traditional display backend for compatibility reasons, and because the extra Morphic worlds using OSWindow are a bit unstable.<br></div><br></div>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.<br><br>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.<br><br></div><div>BTW. When I tried the minimalistic Pharo image, in a completely headless VM, I got the following error:<br><br>[ "Ugh .... now this is a biggie - a system that does not support<br>        any of the display depths at all."<br>Smalltalk<br>    logError:<br>        'Fatal error: This system has no support for any display depth at all.'<br>    inContext: thisContext.<br>Smalltalk quitPrimitive    "There is no way to continue from here" ] in DisplayScreen>>findAnyDisplayDepth<br>DisplayScreen>>findAnyDisplayDepthIfNone:<br>DisplayScreen>>findAnyDisplayDepth<br>DisplayScreen>>setExtent:depth:<br>DisplayScreen class>>startUp<br><br></div><div>As a workaround, I am doing the following for ioHasDisplayDepth with the null driver:<br><br>sqInt ioHasDisplayDepth(sqInt depth)<br>{<br>    return true;<br>}<br><br></div><div>In DisplayScreen class >> startUp we have the following:<br>startUp  "DisplayScreen startUp"<br>    Display setExtent: self actualScreenSize depth: Display nativeDepth.<br>    Display beDisplay<br></div><div><br></div><div>Does it make sense, to always trying to create a display in startup time?<br><br></div><div>Best regards,<br></div><div>Ronie<br></div></div>
</blockquote><br><br><br><div id="M2Signature"><div>-- </div><div>Using Opera's mail client: <a href="http://www.opera.com/mail/">http://www.opera.com/mail/</a></div></div></body></html>