[Pharo-project] The roadmap aka fight plan to make image control host window

Eliot Miranda eliot.miranda at gmail.com
Tue Sep 25 13:35:35 EDT 2012


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.

This code has been used for years in the Newspeak system which has a full
native GUI on Windows.

Going your own way creates an unnecessary fork.


> Then we need to implement  a module which will manage host windows,
> and once image tells it to create a window,
> it can change the function pointer to ioProcessEvents to own function.
>
> This change, would allow us to temporary disable any external event
> processing (like in case of callbacks).
>
> Second, we should move all event-related stuff to new plugin (for
> instance, all definitions in sq.h
> like sqInputEvent , ioSetInputSemaphore() ioGetNextEvent() etc).
>
> For all UI-related stuff the image should communicate with a new
> plugin, while VM should get rid of all knowledge of any existence of
> UI events,
> like input semaphores, primitives for fetching them etc.
>
> Third, of course, all screen update/refresh primitives should be
> deprecated, and image should use new primitives to update the contents
> of host window(s).
>
>
> --
> Best regards,
> Igor Stasenko.
>
>


-- 
best,
Eliot
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.pharo.org/pipermail/pharo-dev_lists.pharo.org/attachments/20120925/197451ef/attachment-0001.html>


More information about the Pharo-dev mailing list