[ 
https://issues.apache.org/jira/browse/PIVOT-878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13478683#comment-13478683
 ] 

Roger Whitcomb commented on PIVOT-878:
--------------------------------------

@ronald: I believe your thought that the bulk of time is spent in the 
"rootDirectoryChanged()" method is correct.  That would end up calling 
TerraFileBrowserSkin.rootDirectoryChanged() method (from the listener list in 
FileBrowser) which in turn would (the first time) do a File.getRoots() call, 
which would end up connecting to each network drive in turn.  I will look at 
your profiler screen shot.  There were some improvements suggested on another 
issue with sample code (for 2.0, which I would have to update for 2.0.3 now) 
that perhaps could speed this up.  I just haven't had time to go through the 
patch code yet.

Thank you very much for the analysis and the test case.  I will commit the 
example code to the appropriate section of the source and see what we can do to 
speed this up.
                
> Show FileBrowserSheet while Initializing
> ----------------------------------------
>
>                 Key: PIVOT-878
>                 URL: https://issues.apache.org/jira/browse/PIVOT-878
>             Project: Pivot
>          Issue Type: Improvement
>          Components: wtk-terra
>    Affects Versions: 2.0.2
>         Environment: All (Mostly Windows)
>            Reporter: Ronald Thomas
>            Assignee: Roger Whitcomb
>            Priority: Minor
>              Labels: Browsing, File, FileBrowserSheet, performance, 
> responsiveness, wtk, wtk-terra
>             Fix For: 2.1
>
>         Attachments: PIVOT-878_example_src.zip, 
> tptp_profiler_exec_call_tree_screenshot.png
>
>
> If the list of file roots returned by 
> http://docs.oracle.com/javase/1.4.2/docs/api/java/io/File.html#listRoots() 
> includes more than a few network drives (primarily on windows where each 
> mapped drive is its own "file system root"), or if the initial path on the 
> FileBrowserSheet maps to a device that takes a while to "spin up", the 
> FileBrowserSheet may not appear on the screen for several seconds making the 
> Pivot app appear unresponsive.  It would help if there were some indication 
> of activity immediately after the call to the FileBrowserSheet.open() method. 
>  The FileBrowserSheet could be displayed in a "loading" mode and then 
> switched to its normal display mode once the potentially long-running 
> initialization has completed.
> In this case, the long running code is around line 936-947 of the 2.0.2 
> release source file at 
> wtk-terra\src\org\apache\pivot\wtk\skin\terra\TerraFileBrowserSkin.java
> Steps to reproduce:
> # Create a Pivot application that opens a FileBrowserSheet using a button.
> # Map about 6 network drives or connect external hard drives to drive letters 
> on a machine running windows
> # Wait enough time for the power-management "spin down" on some or all of the 
> mapped or connected drives
> # Run the Pivot application and click the button that opens the 
> FileBrowserSheet
> # *Nothing appears to be happening for several seconds* (far too long) while 
> the JVM collects the results of File.listRoots() to populate the 
> "driveListButton" listData.
> # Finally after several seconds, the FileBrowserSheet appears.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to