[Pharo-project] [Vm-dev] Re: The roadmap aka fight plan to make image control host window
siguctua at gmail.com
Tue Sep 25 18:13:09 EDT 2012
On 25 September 2012 19:35, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> On Sat, Sep 22, 2012 at 11:22 AM, Igor Stasenko <siguctua at gmail.com> wrote:
>> First, we need to make one thing:
>> Change the VM to not call ioProcessEvents function directly, but
>> rather use a variable which will hold a function pointer.
>> Initially, when VM starts, that function pointer is NULL, and so,
>> "process events" is NOP.
> Please don't reinvent the wheel. The Cog source has a variable inIOProcessEvents that controls this. If negative it disables inIOProcessEvents. If non-negative it prevents reentrancy, essential if one is receiving events from the OS. There's a primitive, primitiveEventProcessingControl, to flip it between the enabled and disabled states.
Yes i seen that.
But apparently, i don't want to just disable it by putting NULL, but
also i want to replace it (or wrap it) with own io handler (see
NativeBoost ;). For that, i need the function pointer.
> This code has been used for years in the Newspeak system which has a full native GUI on Windows.
Does that means that implementation is completely on language side? If
so, then why you need the rotten window management code in VM?
Lately, i seen Mars running native GUI (browser window) using Cocoa on
macs and GTK on linux.
(but you still have VM window hanging around, and you cannot get rid of it).
> Going your own way creates an unnecessary fork.
I would love to not reinvent it, but the user input handling is one of
the weakest spots in current VM implementaion.
I don't like many things there:
- VM is in control whether to create window or not
- VM in control what attributes window has
- VM in control how to translate OS (native) events to
"squeak-compatible" events, often losing important bits and making
everything crawl like hell
- VM in control when to update/refresh a window
- VM decides whether it run headless or not
- VM decides when to handle input events
list can be continued..
Personally, i don't like that image assuming that VM has to provide a
single "default" window
for it. It is image, which should manage that (if it wants to), but not VM.
More information about the Pharo-dev