RE: Win32Window how to get Squeak's window Handle? VM?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

RE: Win32Window how to get Squeak's window Handle? VM?

J J-6
This message sounds like Ffenestri is the planned future GUI interface of Squeak.  Is that so, or I read it wrong?  I was under the impression that the BltBlt method was faster then using native windows (though it could be that just the wxWidget libraries are themselves slow).  Is this true?  Sig has mentioned he can get a 3 to 5 times speed up from BltBlt using OpenGL.

Note, I'm not expressing an opinion here, just trying to understand.

Thanks,
Jason




> From: [hidden email]

> Date: Thu, 12 Jul 2007 09:19:35 -0700
> To: [hidden email]
> Subject: Re: Win32Window how to get Squeak's window Handle? VM?
>
>
> On 12-Jul-07, at 2:14 AM, Herbert König wrote:
>
>
>
> >
> > the VM does what I need actually and I already thought of just making
> > a new VM which gives access to the C-variable stWindow to Squeak.
> But that variable is slated for retirement; it is irrelevant once
> Ffenestri is actually used.
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> "Bother!" said Pooh, searching for the $10m winning lottery ticket.
>
>
>


PC Magazine’s 2007 editors’ choice for best web mail—award-winning Windows Live Hotmail. Check it out!

Reply | Threaded
Open this post in threaded view
|

RE: Win32Window how to get Squeak's window Handle? VM?

Schwab,Wilhelm K
Jason,

My experience is that home-grown widgets can indeed outperform the
native variety under some situations.  I would argue that it is not so
much that bitblt is fast (the native guys have access to it too), but
that when emulating, one can bypass some algorithmic inefficiencies in
message-driven GUIs.  IMHO, emulation is most likely to be of benefit
when building a composite widget with a large number of sub-widgets.
Doing it all with native widgets means that each sub-widget gets its own
message queue, and one must shoe-horn interactions into it.  When
emulating, only the top-level widget needs an OS-level queue, and the
hordes of sub-widgets are accessible directly vs. by individual queues
and their associated context switches.

That is not to say that native widgets are bad, only that one can have
too much of a good thing.  I would very much like to see Squeak grow the
ability to use them.  On one level, I like Squeak's single main window,
but it does interfere with some types of work that I do on Windows with
Dolphin.  Perhaps the ideal thing would be to have an option not to use
it, and there have been efforts in that direction (I do not recall the
details or status).

Squeak's need for native widgets is greatest in terms of the feel of the
GUI.  Halos and "the hand" are great prototyping/editing concepts, but
they are no substitute for a consistent presentation.  Not everything in
modern GUIs is bad<g>.  I am not alone in looking for ways to break
dependencies on Microsoft, and I think Squeak could benefit from
substantial projects seeking a new home.

For those who say "don't break our toy," I note that one can still do
all kinds of incredible bleeding-edge stuff on top of a clean
foundation.  I urge you to stop thinking of Squeak as a toy, and start
thinking of how to make a tool that can build toys (a worthy goal) as
well as boring stuff has market and research value.

Bill




======================
J J <azreal1977@...> wrote:

This message sounds like Ffenestri is the planned future GUI interface
of Squeak.  Is that so, or I read it wrong?  I was under the impression
that the BltBlt method was faster then using native windows (though it
could be that just the wxWidget libraries are themselves slow).  Is this
true?  Sig has mentioned he can get a 3 to 5 times speed up from BltBlt
using OpenGL.

Note, I'm not expressing an opinion here, just trying to understand.

Thanks,
Jason

Wilhelm K. Schwab, Ph.D.
University of Florida
Department of Anesthesiology
PO Box 100254
Gainesville, FL 32610-0254

Email: [hidden email]
Tel: (352) 846-1285
FAX: (352) 392-7029


Reply | Threaded
Open this post in threaded view
|

Re: Win32Window how to get Squeak's window Handle? VM?

timrowledge
In reply to this post by J J-6

On 22-Jul-07, at 22-Jul;12:11 AM, J J wrote:

> This message sounds like Ffenestri is the planned future GUI  
> interface of Squeak.  Is that so, or I read it wrong?

I would love to see Ffenestri be used as part of a new, better, UI  
framework. Whether it is or not is up to whoever has the drive, time,  
skill, opportunity and determination to make it.

>   I was under the impression that the BltBlt method was faster then  
> using native windows (though it could be that just the wxWidget  
> libraries are themselves slow).  Is this true?  Sig has mentioned  
> he can get a 3 to 5 times speed up from BltBlt using OpenGL.
Depends on so many things it's not possible to make a simple answer.  
BitBLT within object memory is almost certainly faster than any usage  
of an external library that tries to do the same thing simply because  
there is typically a large impedence mismatch that takes time to  
correct - OOPs have to be converted to weird handles and passed to  
library calls that expect bitmaps to be in middle-endian upside-down  
backwards edge-twisted form and then it all has to be copied out of  
object memory to the l;ibrary buffer and ... then is all has to be  
reversed at the end. On the other hand, if you can do all your  
drawing by making library calls to draw an anti-aliased 3.14 pixel  
thick line with complex dash pattern onto an OS drawing surface held  
in the memory of a staggeringly fast GPU  - well then you're really  
cooking with gas.

The nice thing about using bitblt for everything is that it is  
superbly portable; all you need to do for any platform is to find out  
how to get that chunk of memory called 'Display' to where it will  
appear on the right bit of glass. In some cases where you happen to  
be the builder of the machine this can be as simple as setting a  
couple of hardware registers to point to the right place in object  
memory. In other cases it can be so convoluted that the writer  
deserves a CS PhD simply for the ability to claim straight facedly  
that it should work - see the RISC OS display stuff or even the X  
display stuff.

On the other hand, driving the 'real' OS api, or going via some  
tolerably competent library such as Cairo, has many advantages in  
performance and inherited capability at the cost of restricting  
portability to those platforms where the library works.

The really nice thing about a good system like Smalltalk is that  
there is nothing technical stopping us having the high-level code not  
care which low-level drawing mechanism is in use. On a cairo-less  
direct buffer machine (hi Jecel!) we might lose the anti-aliased  
shimmering beauty of Vista Aero (blech) but simple clean lines can  
still do the job. Unless someone chose to implement all the same  
glitz internally of course. Or even port Cairo/whatever. If we get  
around to doing any of place, please let's not make the mistake of  
copying the retarded crap laughingly called 'modern user interface', eh?


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Useful random insult:- Moves his lips to pretend he's reading.



Reply | Threaded
Open this post in threaded view
|

Re: Win32Window how to get Squeak's window Handle? VM?

Igor Stasenko
On 22/07/07, tim Rowledge <[hidden email]> wrote:

>
> On 22-Jul-07, at 22-Jul;12:11 AM, J J wrote:
>
> > This message sounds like Ffenestri is the planned future GUI
> > interface of Squeak.  Is that so, or I read it wrong?
>
> I would love to see Ffenestri be used as part of a new, better, UI
> framework. Whether it is or not is up to whoever has the drive, time,
> skill, opportunity and determination to make it.
>
> >   I was under the impression that the BltBlt method was faster then
> > using native windows (though it could be that just the wxWidget
> > libraries are themselves slow).  Is this true?  Sig has mentioned
> > he can get a 3 to 5 times speed up from BltBlt using OpenGL.
> Depends on so many things it's not possible to make a simple answer.
> BitBLT within object memory is almost certainly faster than any usage
> of an external library that tries to do the same thing simply because
> there is typically a large impedence mismatch that takes time to
> correct - OOPs have to be converted to weird handles and passed to
> library calls that expect bitmaps to be in middle-endian upside-down
> backwards edge-twisted form and then it all has to be copied out of
> object memory to the l;ibrary buffer and ... then is all has to be
> reversed at the end.

Same is true for bitblt - when hardware display memory layout is not
same as used with bitblt, then you need to convert form bits to
hardware specific format to be able to draw them correctly on the
screen.

> On the other hand, if you can do all your
> drawing by making library calls to draw an anti-aliased 3.14 pixel
> thick line with complex dash pattern onto an OS drawing surface held
> in the memory of a staggeringly fast GPU  - well then you're really
> cooking with gas.

Yes, indeed, OpenGL provides a basic api for drawing simple
primitives, such as lines/triangles. And gives you much control on how
to render them without caring about what pixels you need to modify in
form buffer to draw your line(s).

For instance, when i coded an ellipse/arc drawing using GL calls, all
i was need is to calculate point positions on arc. Everything else is
just not my concern.


>
> The nice thing about using bitblt for everything is that it is
> superbly portable; all you need to do for any platform is to find out
> how to get that chunk of memory called 'Display' to where it will
> appear on the right bit of glass. In some cases where you happen to
> be the builder of the machine this can be as simple as setting a
> couple of hardware registers to point to the right place in object
> memory. In other cases it can be so convoluted that the writer
> deserves a CS PhD simply for the ability to claim straight facedly
> that it should work - see the RISC OS display stuff or even the X
> display stuff.
>
You are right about portability, but nowadays its hard to find a PC
where graphics memory not backed with GPU which can be used for making
fast blitting operations or rendering 3D.
Even modern cell phones having chips which supporting OpenGL ES :)
And i think that days, when graphics devices/cards was just a region
of memory to which you can write bits to show something on display is
gone.
I'm not saying about other devices (like plotter or vector display),
where concept of 'pixel' was never exists, and thus, using blitting
for them is not possible, while rendering using a primitive commands
(like line/circle) is supported well.

> On the other hand, driving the 'real' OS api, or going via some
> tolerably competent library such as Cairo, has many advantages in
> performance and inherited capability at the cost of restricting
> portability to those platforms where the library works.
>
> The really nice thing about a good system like Smalltalk is that
> there is nothing technical stopping us having the high-level code not
> care which low-level drawing mechanism is in use. On a cairo-less
> direct buffer machine (hi Jecel!) we might lose the anti-aliased
> shimmering beauty of Vista Aero (blech) but simple clean lines can
> still do the job. Unless someone chose to implement all the same
> glitz internally of course. Or even port Cairo/whatever. If we get
> around to doing any of place, please let's not make the mistake of
> copying the retarded crap laughingly called 'modern user interface', eh?
>
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Useful random insult:- Moves his lips to pretend he's reading.
>
>
>
>


--
Best regards,
Igor Stasenko AKA sig.