I am implementing native window support for Pharo, in the form of OSWindow, using SDL2. This is also requires a custom VM, so its going to take some time. We originally started making OSWindow with Igor, to have a more direct display of graphics to avoid GPU->CPU->GPU frame-buffer round-trip when using OpenGL in Pharo. And also as an opportunity to remove all the graphics code from the VM, which we did for the Linux version. The VM changes includes adding a small check to the VM heartbeat for pending events. If there are pending events, a Semaphore is signaled to wake up a thread(a Process) that handles events in the image side. Igor made this change. The other changes in the VM include the removal of the old graphic code. We already did this cleanup with Igor for the Linux VM. Windows and Mac are next. Currently the work is mostly done for Linux. In Window I could make it work by adding the event check call to the event loop. But when looking to the Windows code, it gives me a huge desire to kill it. OSWindow have the following capabilities: - Native operating system window creation. - Event handling - Support for having different kinds of renderers. As for the renderers, we have: - Form renderer that we used to display the main Pharo window. - OpenGL renderer that provides an OpenGL context. This one requires external bindings for OpenGL, such as the ones in NBOpenGL. Attached is a screenshot of OSWindow with the main Pharo window and OpenGL working. 2014-05-15 16:05 GMT-04:00 Esteban A. Maringolo <emaringolo@gmail.com>:
2014-05-15 16:57 GMT-03:00 Eliot Miranda <eliot.miranda@gmail.com>:
That single screen has its advantages. It's a very cosy place to be :-)
+1
Plus... unless we got independent process/queues per window (like Smalltalk/X [1]) I don't see the advantage from the development standpoint.
Regards,
[1] In St/X you can kill a window without killing the whole image. Pretty useful if you mess up something :)