maybe it should become the rule 0 of udig dev ;-) . (i actually otherwise use commands for all modifications on the maps.)
i opened the following issue to discuss the problem. http://jira.codehaus.org/browse/UDIG-1731 thanks for your help! stan. On 2010 Sep 22, at 15:30, Jody Garnett wrote: > Cool bust of luck with the debugging session :-) > > I went and checked and the developers guide[1] had this to say: >> Before you Start a word on Thread Safety >> Because this is a dynamic application we ask you not to hack away at these >> data structures as the system is running (to do so often freezes the >> screen). Instead we ask you to assemble acommand that will be issued in the >> user interface thread. >> >> uDig is highly threaded, as benefits a client application, ensuring that >> "work" happens in the correct thread is a large benefit provided to you by >> the GIS Application. >> >> > > So let me know if we can make this warning appear in a more obvious location > for the next developer :-) > > Jody > > [1] > http://udig.refractions.net/confluence/display/DEV/02+Project+Map+and+Layer > > On 22/09/2010, at 6:00 PM, Stanislas Nanchen wrote: > >> Hi Jody, hi list, >> >> Thanks for the answer. I indeed did not use a command to make this change. >> However the error still appears; debugging session ahead :) >> >> stan >> >> On 2010 Sep 21, at 22:33, Jody Garnett wrote: >> >>> I think you have probably just found a bug; since I don't myself have the >>> problem I will need to ask you to spend some time in the debugger to see >>> what is going on and create a patch. >>> >>> I am going to guess that the renderer is still trying to draw as the map is >>> changed; we probably need to stop the renderer and then change the map? >>> >>> I am going to just confirm that you are using a command to make this change >>> (a command is like a small runnable that you pass to the map; it will run >>> the command to update the internal state in a threadsafe manner; this is >>> how we avoid changing the state of the map while the renderer or other code >>> is making use of it). >>> >>> Specifically calling any internal methods should be done only from inside a >>> command. >>> >>> Jody >>> >>> On 21/09/2010, at 11:59 PM, Stanislas Nanchen wrote: >>> >>>> Hello everyone, >>>> >>>> At my company, we have embedded uDig for our map displaying purposes and I >>>> have the following problem with the MapViewer >>>> when setting a map for the second time via the method setMap. >>>> >>>> In setMap, if an old map is present, its renderManager is kind of >>>> 'disposed' with the following two lines of code: >>>> >>>> (in MapViewer) >>>> 170 renderManager.setMapInternal( null ); >>>> 171 renderManager.setMapDisplay(null); >>>> >>>> In certain circumstances, unfortunately unclear, the old renderManagner >>>> tries to refresh an image. This fails with an NPE in the following >>>> line as its MapDisplay is null. >>>> >>>> (in CompositeRendererImpl.java) >>>> 377 Dimension displaySize = >>>> getContext().getMapDisplay().getDisplaySize(); >>>> >>>> the stack trace is the following: >>>> >>>> java.lang.NullPointerException >>>> at >>>> net.refractions.udig.project.internal.render.impl.CompositeRendererImpl.refreshImage(CompositeRendererImpl.java:377) >>>> at >>>> net.refractions.udig.project.internal.render.impl.CompositeRendererImpl.refreshImage(CompositeRendererImpl.java:296) >>>> at >>>> net.refractions.udig.project.internal.render.impl.RenderExecutorComposite$CompositeRendererJob.incrementalUpdate(RenderExecutorComposite.java:119) >>>> at >>>> net.refractions.udig.project.internal.render.impl.RenderExecutorComposite$CompositeRendererJob.startRendering(RenderExecutorComposite.java:166) >>>> at >>>> net.refractions.udig.project.internal.render.impl.RenderJob.run(RenderJob.java:213) >>>> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) >>>> >>>> The problem is quite puzzling as this NPE is not raised systematically. >>>> Should I take any special precaution when setting a map to a MapViewer for >>>> the second time in order to avoid this error? >>>> >>>> Thank you for your help. >>>> Stanislas Nanchen. >>>> _______________________________________________ >>>> User-friendly Desktop Internet GIS (uDig) >>>> http://udig.refractions.net >>>> http://lists.refractions.net/mailman/listinfo/udig-devel >>> >>> _______________________________________________ >>> User-friendly Desktop Internet GIS (uDig) >>> http://udig.refractions.net >>> http://lists.refractions.net/mailman/listinfo/udig-devel >> >> _______________________________________________ >> User-friendly Desktop Internet GIS (uDig) >> http://udig.refractions.net >> http://lists.refractions.net/mailman/listinfo/udig-devel > > _______________________________________________ > User-friendly Desktop Internet GIS (uDig) > http://udig.refractions.net > http://lists.refractions.net/mailman/listinfo/udig-devel _______________________________________________ User-friendly Desktop Internet GIS (uDig) http://udig.refractions.net http://lists.refractions.net/mailman/listinfo/udig-devel