[x3d-public] event tracing
Joe D Williams
joedwil at earthlink.net
Wed Nov 16 10:15:17 PST 2016
> This is similar to events caused by external SAI actions which
> happen when
> they happen. The SAI spec. says somewhere that those SAI events need
> to
> trigger a fresh cascade. cobweb_dom and cobweb may currently sort
> such
> events into the event stream of the current cascade (or perhaps next
> scheduled cascade) as is being described for asynchronous scripts
> but I am
> not sure.
Maybe old and settled, but the way I have seen #X3D work is that an
event from 'external' source is gated by the beginUpdate(); and
endUpdate(); 'external' SAI functions. Unless you declare
beginUpdate(); events are accepted and converted to 'internal' events'
at the the X3D browser convenience. If you declare beginUpdate(); any
'external' SAI events are buffered then, when the endUpdate(); is
received the buffered events have the same time stamp and are
processed as 'internal' events.
So far, when using DOM events to control the <x3d> beginUPdate and
endUpdate are not mentioned, that I have seen, even when scripting an
Inline from the DOM.
Thanks Again,
Joe
----- Original Message -----
From: "Andreas Plesch" <andreasplesch at gmail.com>
To: "Don Brutzman" <brutzman at nps.edu>
Cc: "X3D Graphics public mailing list" <x3d-public at web3d.org>
Sent: Thursday, November 03, 2016 1:18 PM
Subject: Re: [x3d-public] event tracing
> On Thu, Nov 3, 2016 at 12:45 PM, Don Brutzman <brutzman at nps.edu>
> wrote:
>
>> Very interesting. Wondering, do you think this might lead to
>> violations
>> of the loop-breaking rule for events?
>>
>
> Not quite sure what you may refer to. The logging is just logging,
> nothing
> else. When I mentioned seemingly variable processing times for the
> same
> event, I was referring to the same event repeated in different
> cascades
> (x3d timestamps).
>
>
>> Essentially, the rule says that all event values generated during a
>> given
>> event cascade (i.e. between frame draws) are checked. If two
>> events are
>> both produced by the same source into the same ROUTE, then
>> duplication
>> (likely a loop) has occurred. Such recurrences are dropped to
>> avoid
>> infinite loops.
>>
>> I've always assumed that this means the duplicate events have the
>> same
>> timestamp, thinking for typical implementations that is probably
>> what
>> occurs.
>>
>> However, if the check is performed by each individual ROUTE, which
>> can
>> tell if a redraw has occurred since last receiving an eventOut
>> value,
>> perhaps strict comparison of timestamp values isn't necessary?
>>
>
> not sure.
>
>
>> Key references:
>> ...
>>
>> 29.2.7 Asynchronous scripts
>> http://www.web3d.org/documents/specifications/19775-1/V3.3/
>> Part01/components/scripting.html#Asynchronousscripts
>>
>> "Some languages supported by X3D browsers may allow Script nodes to
>> spontaneously generate events, allowing users to create Script
>> nodes that
>> function like new X3DSensorNode nodes. In these cases, the Script
>> is
>> generating the initial events that causes the event cascade, and
>> the
>> scripting language and/or the browser shall determine an
>> appropriate
>> timestamp for that initial event. Such events are then sorted into
>> the
>> event stream and processed like any other event, following all of
>> the same
>> rules including those for looping."
>>
>
> This is similar to events caused by external SAI actions which
> happen when
> they happen. The SAI spec. says somewhere that those SAI events need
> to
> trigger a fresh cascade. cobweb_dom and cobweb may currently sort
> such
> events into the event stream of the current cascade (or perhaps next
> scheduled cascade) as is being described for asynchronous scripts
> but I am
> not sure.
>
> One could start to think about testing a loop producing (malicious)
> ROUTE
> or script. The loop could be produced just internally and also
> somehow by
> involving the DOM integration (but any DOM action caused by a x3d
> event of
> the current cascade should always affect/trigger a later cascade).
> Is
> there a loop example somewhere ?
>
> -Andreas
>
>
>
>> ===========================================
>>
>> On 11/3/2016 6:32 AM, Andreas Plesch wrote:
>>
>>> On Mon, Oct 31, 2016 at 6:54 PM, Don Brutzman <brutzman at nps.edu
>>> <mailto:
>>> brutzman at nps.edu>> wrote:
>>>
>>> Tres cool, thank you for this information Andreas.
>>>
>>> Trace performance of your teapot widgets is absolutely
>>> tremendous,
>>> even while printing trace values on the screen (historically a bog
>>> on
>>> performance). No discernible change in perceived responsiveness,
>>> with/without firebug tracing, even when i interactively try to
>>> provoke
>>> sluggishness (running good old Windows 7 firefox).
>>>
>>>
>>> I slightly updated the event logging to use performance.now rather
>>> than
>>> event.timeStamp which is consistent across browsers and to also
>>> report the
>>> difference between the x3d timestamp and the time of logging which
>>> should
>>> happen just after dispatching of the DOM event and before drawing
>>> to the
>>> webgl canvas. The x3d timestamp is created at the beginning of
>>> processing
>>> of x3d events for each cascade, I believe. This difference varies
>>> considerably, about between 2 ms and 20 ms, even for repeats of
>>> the same
>>> events. Chrome shows a little less difference on average. So I am
>>> not sure
>>> how accurate these timings are in relation to when things really
>>> happen and
>>> what external factors influence these.
>>>
>>> https://andreasplesch.github.io/cobweb_dom/tests/interactive
>>> Transformations.xhtml
>>>
>>> -Andreas
>>>
>>
>>
>> all the best, Don
>> --
>> Don Brutzman Naval Postgraduate School, Code USW/Br
>> brutzman at nps.edu
>> Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA
>> +1.831.656.2149
>> X3D graphics, virtual worlds, navy robotics
>> http://faculty.nps.edu/brutzma
>> n
>>
>
>
>
> --
> Andreas Plesch
> 39 Barbara Rd.
> Waltham, MA 02453
>
--------------------------------------------------------------------------------
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
More information about the x3d-public
mailing list