Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 337521 - AbstractSimpleNavigationNodeProvider should provide a way to build nodes asynchronous
Summary: AbstractSimpleNavigationNodeProvider should provide a way to build nodes asyn...
Status: RESOLVED FIXED
Alias: None
Product: Riena
Classification: RT
Component: navigation (show other bugs)
Version: unspecified   Edit
Hardware: PC All
: P3 normal (vote)
Target Milestone: 3.0.0.M7   Edit
Assignee: Nobody - feel free to take it CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-02-18 03:08 EST by Nobody - feel free to take it CLA
Modified: 2011-05-03 10:16 EDT (History)
3 users (show)

See Also:


Attachments
Patch for async-buildNode(..) (12.94 KB, patch)
2011-02-18 03:30 EST, Nobody - feel free to take it CLA
steffen.kriese: iplog+
Details | Diff
New patch for async navigation support (16.17 KB, patch)
2011-02-24 03:25 EST, Steffen Kriese CLA
steffen.kriese: iplog+
Details | Diff
Updated patch with fix for LnfUpdater (14.32 KB, patch)
2011-02-25 07:07 EST, Nobody - feel free to take it CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Nobody - feel free to take it CLA 2011-02-18 03:08:47 EST
At the moment the buildNode(..) method of INavigationAssembler is allways called on the user interface thread. As the implementation of buildNode(..) can be time consuming there should be a way (API?) to build the node on a parallel worker thread for a more responsive user interface.
Comment 1 Nobody - feel free to take it CLA 2011-02-18 03:30:35 EST
Created attachment 189255 [details]
Patch for async-buildNode(..)

Patch for async-buildNode(..) + Example
Comment 2 Holger Hoch CLA 2011-02-23 02:10:01 EST
The patch can lead to a high cpu cycle consumtion for at least one processor. It should be modified as follows:

while (!shell.isDisposed()) {
   if (!display.readAndDispatch()) {
      display.sleep();
   }
}

Sending an explicit
   display.wake();
should not be required as #isFinished is set at the end of the #runJob() method and #finalUpdateUI() is executed on the display thread afterwards thus quitting the above dispatch loop.
Comment 3 Steffen Kriese CLA 2011-02-24 03:25:21 EST
Created attachment 189675 [details]
New patch for async navigation support

- adds NavigationNode.createNodeAsync() method
- reduces the performance problem, while dispatching the ui-events
Comment 4 Nobody - feel free to take it CLA 2011-02-25 07:07:52 EST
Created attachment 189788 [details]
Updated patch with fix for LnfUpdater
Comment 5 Steffen Kriese CLA 2011-03-21 04:53:03 EDT
Patch applied