Description
I am doing some analysis to improve the IDE startup time (I am discussing the topic in the email list).
I found another problem that is related to the menus. In particular: createBoardMenusAndCustomMenus
, and in the method: filterVisibilityOfSubsequentBoardMenus
.
What happens is that for each menu on a board such as Esp8266, it is calling LibrariesIndexer.rescanLibraries()
, and it ends up costing a lot of time at startup and also when selecting a board.
This is the stack (not an error ...):
at processing.app.Base.onBoardOrPortChange (Base.java:1346)
at processing.app.Base $ 12.actionPerformed (Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus (Base.java:1651)
at processing.app.Base.access $ 0 (Base.java:1635)
at processing.app.Base $ 11.actionPerformed (Base.java:1576)
at processing.app.Base.rebuildBoardsMenu (Base.java:1550)
at processing.app.Base. (Base.java:285)
at processing.app.Base.main (Base.java:150)
As you can see for each menu item, he is manually calling 'actionPerformed', and doing a lot of unnecessary things
Set log4j store directory /home/ricardo/.arduino15
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/media/ricardo/Dados/Workspace/Arduino/arduino-master/arduino-core/lib/slf4j-simple-1.7.22.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/media/ricardo/Dados/Workspace/Arduino/arduino-master/app/lib/slf4j-simple-1.7.22.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@48d7ad8b,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=115200]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@a53bb6f,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=80 MHz]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@6759f091,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=26 MHz]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@14a54ef6,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=512K (no SPIFFS)]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@3b8ee898,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=QIO]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@294bdeb4,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=40MHz]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@1f86099a,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=ck]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@f2c488,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Disabled]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@7bc9e6ab,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=None]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@4248ed58,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=v2 Lower Memory]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@4564e94b,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=2]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> menu javax.swing.JRadioButtonMenuItem[,0,0,0x0,invalid,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@51745f40,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=false,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Only Sketch]
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.filterVisibilityOfSubsequentBoardMenus(Base.java:1651)
at processing.app.Base.access$0(Base.java:1635)
at processing.app.Base$11.actionPerformed(Base.java:1576)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$11.actionPerformed(Base.java:1578)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base$12.actionPerformed(Base.java:1605)
at processing.app.Base.rebuildBoardsMenu(Base.java:1550)
at processing.app.Base.<init>(Base.java:285)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> onBoardOrPortChange main
java.lang.Throwable
at processing.app.Base.onBoardOrPortChange(Base.java:1346)
at processing.app.Base.<init>(Base.java:294)
at processing.app.Base.main(Base.java:150)
(DEBUG)>>>>>>>>> rescanLibraries main
(DEBUG)>>>>>>>>> rescanLibraries main
>>>>> pdeKeywords = processing.app.syntax.PdeKeywords@63a28987
>>>>> pdeKeywords = processing.app.syntax.PdeKeywords@63a28987
>>>>> pdeKeywords = processing.app.syntax.PdeKeywords@63a28987
>>>>> pdeKeywords = processing.app.syntax.PdeKeywords@63a28987
Activity
ricardojlrufino commentedon May 15, 2020
What I notice in the IDE is that there are a series of problems to keep the menus filled and always consistent, I think it would be better to have a BoardSettingsDialog, to configure the board.
I did something similar with the examples, which had this problem, and were very slow to load.
ricardojlrufino commentedon May 16, 2020
See Time lost for loading board Esp8266
On startup the method filterVisibilityOfSubsequentBoardMenus, (sum the time of all the submenus)
That's because it selects all the submenus, and forces a scan of the libraries.
ricardojlrufino commentedon May 17, 2020
I managed to correct these errors, so I will do a PR to be able to better evaluate
matthijskooijman commentedon May 18, 2020
TBH, the board selection code, especially wrt to option menus, is a bit of a mess that could use a big refactor and cleanup. However, I suspect that in the near feature, some of this code might end up being moved into
arduino-cli
, once the java IDE starts to use that (then maybe the resolution of all available board options might be done inarduino-cli
, with the IDE just showing whatever menusarduino-cli
returns for the selected board). I'm not sure if this is the plan, maybe @cmaglie can comment.Anyway, I think fixing this slow startup would be good to do already (better to not wait for
arduino-cli
with that, just maybe try it without too much a refactor).Thanks for looking into this, I'm looking forward to a PR :-)
Use a Event-Driven model to speed up IDE FIX arduino#10214 arduino#10235
Use a Event-Driven model to speed up IDE FIX arduino#10214 arduino#10235
Use a Event-Driven model to speed up IDE FIX arduino#10214 arduino#10235
Use a Event-Driven model to speed up IDE FIX arduino#10214 arduino#10235