[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [MiNT] XAAES slow?
søn, 19,.06.2005 kl. 01.54 -0500, skrev evan@coolrunningconcepts.com:
> Quoting Odd Skancke <ozk@atari.org>:
>
>
> >> I don't handle the GEM events myself, I use Windom for that.
> >
> > Ok, I found out why zView is so slow regarding handling of WM_REDRAWs.
> > The problem is that on XaAES, wind_calc() is slow, due to
> > configurability (which is not apparent yet). And, wind_calc() was called
> > SEVERAL TIMES for EACH WM_REDRAW received. In my opinion this is sick,
>
> I had a short discussion with one of the original authors of Windom about some
> of its odd redraw behavior and removing quite a few extra calls that weren't
> necessary. Some very basic changes would remove quite a few redundant calls.
>
> The response was to bring it up on the Windom list and talk to ... I
> forget who
> exactly is the new "major developer" .. but they are on this list and the
> aranym one. Get with me if you'd like a recap of my suggestions.
Yes, I'd like to see what your suggestions were :)
>
> > but this is what users of Windom must accept because I dont recon I can
> > convince windom authors. So now I have XaAES keep the calculations of
>
> I bet you could convince them. In fact, I heard there was some new version
> coming out with a new API, and since I couldn't find much of any
> information on
> it, I just decided I was spread too thin to look into it.
The first thing I would like to see is getting Windom into the CVS, so
one can help.
>
> > previous wind_calc()'s, which makes wind_calc() VERY fast providing the
> > request match a previous calc.
>
> Thats an excellent way to handle it!
>
> > Can anyone explain to me why wind_calc() calls are required here?
>
> If I remember, the information is never saved, so for each window a number of
> calls are done and intersections computed (more than needed), and then a user
> function is called for each rectangle, and since the previous
> information isn't
> saved, it makes more calls.
There are WF_WORKXYWH and WF_CURRXYWH wind_set() modes to figure out
all one need to service anything about an already opened window. I dont
get why wind_calc() is used here.
>
> > This is not a zview problem per say at all. It is overkill by Windom.
> > XaAES have all such info on each window. I wonder if we should define
> > new ways of obtaining such info on a "per-window" basis, since soon one
> > can change themes realtime in XaAES. Then it would be nice to have libs
> > such as windom gather correct info ;-)
>
> A theme change would likely signal a full redraw of every window, and would
> clear any internal AES caches. Since the current solution doesn't cache any
> information, client side, things should work fine. The changes I suggested
> wouldn't hurt this either as it only holds this information during the redraw,
> and not between redraws. As long as no apps cache such information between
> redraws, you should be fine.
This is not so simple. The problem is that wind_calc() will return
information based on the 'current' theme, which may have changed since
the already opened window for which info is collected was opened. As
soon as a window is opened, its layout (that is, relation between a
window's full extent and work area) wont change. This means that a theme
change only affects windows opened _after_ the change. I will most
probably make theme changes possible on already opened windows too, but
this is somehting apps would need to support and new things such as
WM_GMCHG (GeoMetricChanGe -- if that is the correct word ;-)) message
tells the application that window's layout have changed.
>
> Is there any documentation on the theme ability? Is it only window themes, or
> buttons and sliders and such too?
No documentation as far as I know. The only "attempt" at themes are the
WF_DCOLOR/WF_COLOR wind_set() modes. And the work I do now is in very
early stages, defining api's etc.
Best Regards
Odd Skancke