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

Reply via email to