Hi Andreas,
Do you have a live viewPlatform attach to View when
v.stopBehaviorScheduler() is invoked ?
I can see from the current source code that there
is a bug causing isBehaviorSchedulerRunning()
always return true in this case.
- Kelvin
------------------
Java 3D Team
Sun Microsystems Inc.
>Date: Fri, 17 May 2002 21:12:49 +0200
>From: Andreas Jerke <[EMAIL PROTECTED]>
>Subject: [JAVA3D] Behaviour Scheduler does not stop
>To: [EMAIL PROTECTED]
>MIME-version: 1.0
>X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
>Content-transfer-encoding: 7bit
>Importance: Normal
>X-Priority: 3 (Normal)
>X-MSMail-priority: Normal
>Delivered-to: [EMAIL PROTECTED]
>
>Hello,
>
>I'm developing a SceneGraph inspector. This is a Swing Jtree which
>views the actual SceneGraph for debug and development.
>
>This JTree listens to a tree model called InspectorLocal (a Locale
>implementing interface TreeModel). So you can use InspectorLocale
>instead of Locale for debugging.
>
>To get access to all live Nodes and NodeComponets in InspectorLocale, I
>have to detach all BranchGroups, perform all necessary access to the
>SceneGraph references and after this reattach all BranchGroups. I
>perform this detaching/reattach in a Thread, so the Jtree is fast and
>has a smart usability without "hanging" . The Thread will wait some
>milliseconds before reattaching, because the JTree will call the methods
>implemented by TreeModel several times for every view update.
>
>This works fine for SceneGraphs without Behaviours. When using
>InspectorLocale on SceneGraphs with Behaviours, the application will
>hang. I assume this is because of the J3D Behavior Scheduler is not
>synchronized with my Thread. So I stop the Scheduler before detaching
>Branchgroups. Here is the run() method in InspectorLocale:
>
> public void run () {
>
> [...]
>
> //stop rendering and behaviour scheduler
> View v = this.viewer.getView();
> v.stopView();
> long[] milis = v.stopBehaviorScheduler();
>
> while (v.isBehaviorSchedulerRunning() || v.isViewRunning()) {
> try {
> thread.sleep(this.THREAD_MAX_SLEEP);
> System.out.println("waiting for view to stop ...
>Scheduler:"+v.isBehaviorSchedulerRunning()+" begin:"+milis[0]+"
>end:"+milis[1]+" View running:"+v.isViewRunning());
> } catch (InterruptedException e){
> System.out.println("interrupted while waiting for
>view stop !");
> }
> }
>
> Iterator iter = rootBG.iterator();
> while (iter.hasNext()) {
> try {
> super.addBranchGraph((BranchGroup)iter.next());
> } catch (CapabilityNotSetException e) {
> System.out.println("Could not reattach BranchGroup !");
> }
> }
>
> v.startView();
> v.startBehaviorScheduler();
>
> detached = false;
> }
>
>
>Now my problem:
>The method isBehaviorSchedulerRunning() ALLWAYS returns true, also I
>stopped the schedular process. My Thread hangs in a continuous loop.
>
>Anyone else having a similiar problem ?
>
>Cheers,
>Andreas
>
>===========================================================================
>To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
>of the message "signoff JAVA3D-INTEREST". For general help, send email to
>[EMAIL PROTECTED] and include in the body of the message "help".
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA3D-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".