@@ -172,28 +172,30 @@ public Void call() throws Exception {
172172
173173 @ Override
174174 public void render (final RenderManager renderManager ) {
175+ if (isBusy ()) {
176+ final SnapshotJob job = jobs .get (0 );
177+
178+ for (int i = 0 ; i < 6 ; i ++) {
179+ viewports [i ].clearScenes ();
180+ viewports [i ].attachScene (job .scene );
181+ renderManager .renderViewPort (viewports [i ], 0.16f );
182+ buffers [i ] = BufferUtils .createByteBuffer (
183+ size * size * imageFormat .getBitsPerPixel () / 8 );
184+ renderManager .getRenderer ().readFrameBufferWithFormat (
185+ framebuffers [i ], buffers [i ], imageFormat );
186+ images [i ] = new Image (imageFormat , size , size , buffers [i ],
187+ ColorSpace .Linear );
188+ MipMapGenerator .generateMipMaps (images [i ]);
189+ }
175190
176- if (jobs .isEmpty ()) {
177- return ;
178- }
179-
180- final SnapshotJob job = jobs .get (0 );
181-
182- for (int i = 0 ; i < 6 ; i ++) {
183- viewports [i ].clearScenes ();
184- viewports [i ].attachScene (job .scene );
185- renderManager .renderViewPort (viewports [i ], 0.16f );
186- buffers [i ] = BufferUtils .createByteBuffer (size * size * imageFormat .getBitsPerPixel () / 8 );
187- renderManager .getRenderer ().readFrameBufferWithFormat (framebuffers [i ], buffers [i ], imageFormat );
188- images [i ] = new Image (imageFormat , size , size , buffers [i ], ColorSpace .Linear );
189- MipMapGenerator .generateMipMaps (images [i ]);
190- }
191-
192- final TextureCubeMap map = EnvMapUtils .makeCubeMap (images [0 ], images [1 ], images [2 ], images [3 ], images [4 ], images [5 ], imageFormat );
191+ final TextureCubeMap map = EnvMapUtils .makeCubeMap (images [0 ],
192+ images [1 ], images [2 ], images [3 ], images [4 ], images [5 ],
193+ imageFormat );
193194 debugEnv = map ;
194- job .callback .done (map );
195- map .getImage ().dispose ();
196- jobs .remove (0 );
195+ job .callback .done (map );
196+ map .getImage ().dispose ();
197+ jobs .remove (0 );
198+ }
197199 }
198200
199201 /**
@@ -276,6 +278,17 @@ public ViewPort[] getViewPorts(){
276278 return viewports ;
277279 }
278280
281+ /**
282+ * Test whether this EnvironmentCamera is busy. Avoid reconfiguring while
283+ * busy!
284+ *
285+ * @return true if busy, otherwise false
286+ */
287+ public boolean isBusy () {
288+ boolean result = !jobs .isEmpty ();
289+ return result ;
290+ }
291+
279292 @ Override
280293 protected void initialize (Application app ) {
281294 this .backGroundColor = app .getViewPort ().getBackgroundColor ().clone ();
0 commit comments