[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gnash-dev] high CPU usage (heartbeat)

From: Sandro Santilli
Subject: Re: [Gnash-dev] high CPU usage (heartbeat)
Date: Fri, 29 Apr 2011 09:28:36 +0200

On Thu, Apr 28, 2011 at 11:38:58PM -0700, John Gilmore wrote:
> > An heartbeat is dispatched every 10ms, by design. Would be interesting
> > to inspect further for the 0ms timedout poll.
> As has been done in the Linux kernel, could we switch this to
> "tickless" operation, such that gnash delays until the script lets
> us know that something will need to happen?  Rather than waking
> up every 10ms to ask ourselves, "Does anything need to happen?"

It won't be very easy to tell if we need to do something or not.
Any actionscript object might become a MovieClip superclass
of any depth level. Simply having an onEnterFrame member registered
in such object would require to wakeup at SWF fps rate.
Any non-stopped MovieClip containing control tags would also need to be
called at SWF FPS rate.  Currently any loader object (LoadVars,
MovieClipLoader, XML loads) needs to check if any data is coming down.
Sound needs to be feeded too, and video updated.

So, answer is: we could "move toward" a somewhat reduced ticking, but
it'll be a long way.

I've been thinking for some time about having movie_root::advance (the
current heartbeat entry point) return an indication about when to ring
next. That might be a first step. It might return next SWF FPS boundary
in absence of registered callbacks (timers, loads, sounds...) possibly
reducing ticks from 10ms of delay to 83ms of delay (for the standard
12FPS movie). Such interface would then allow for improvements
(ie: in presence of timers check for actual timers expiration time,
in presence of streaming video/sound check the requested framerate etc).

The effects of such a reduced "heartbeat" you may check by tweaking
heartbeat frequency using the -d switch.


  ()   Free GIS & Flash consultant/developer

reply via email to

[Prev in Thread] Current Thread [Next in Thread]