From eaa9858b18c4dbd84b667ea21f8601a8c2796a53 Mon Sep 17 00:00:00 2001 From: Markus Uhlig Date: Thu, 4 Aug 2016 11:11:30 +0200 Subject: [PATCH] - Replaced console outputs by the standard java logging concept and removed obsolete Sysout-Calls. - No functional changes. - added missing override tags. --- .../java/com/jme3/system/awt/AwtPanel.java | 183 +++++++++--------- 1 file changed, 90 insertions(+), 93 deletions(-) diff --git a/jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanel.java b/jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanel.java index 0314cf683..8c472bda1 100644 --- a/jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanel.java +++ b/jme3-desktop/src/main/java/com/jme3/system/awt/AwtPanel.java @@ -51,11 +51,13 @@ import java.nio.IntBuffer; import java.util.ArrayList; import java.util.Arrays; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.logging.Level; +import java.util.logging.Logger; public class AwtPanel extends Canvas implements SceneProcessor { private boolean attachAsMain = false; - + private BufferedImage img; private FrameBuffer fb; private boolean srgb = false; @@ -63,148 +65,137 @@ public class AwtPanel extends Canvas implements SceneProcessor { private IntBuffer intBuf; private RenderManager rm; private PaintMode paintMode; - private ArrayList viewPorts = new ArrayList(); - + private ArrayList viewPorts = new ArrayList(); + // Visibility/drawing vars private BufferStrategy strategy; private AffineTransformOp transformOp; private AtomicBoolean hasNativePeer = new AtomicBoolean(false); private AtomicBoolean showing = new AtomicBoolean(false); private AtomicBoolean repaintRequest = new AtomicBoolean(false); - + // Reshape vars - private int newWidth = 1; + private int newWidth = 1; private int newHeight = 1; - private AtomicBoolean reshapeNeeded = new AtomicBoolean(false); + private AtomicBoolean reshapeNeeded = new AtomicBoolean(false); private final Object lock = new Object(); - - public AwtPanel(PaintMode paintMode){ + + public AwtPanel(PaintMode paintMode) { this(paintMode, false); } - - public AwtPanel(PaintMode paintMode, boolean srgb){ + + public AwtPanel(PaintMode paintMode, boolean srgb) { this.paintMode = paintMode; this.srgb = srgb; - if (paintMode == PaintMode.Accelerated){ + if (paintMode == PaintMode.Accelerated) { setIgnoreRepaint(true); } - - addComponentListener(new ComponentAdapter(){ + + addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { - synchronized (lock){ + synchronized (lock) { int newWidth2 = Math.max(getWidth(), 1); int newHeight2 = Math.max(getHeight(), 1); - if (newWidth != newWidth2 || newHeight != newHeight2){ + if (newWidth != newWidth2 || newHeight != newHeight2) { newWidth = newWidth2; newHeight = newHeight2; reshapeNeeded.set(true); - System.out.println("EDT: componentResized " + newWidth + ", " + newHeight); } } } }); } - + @Override - public void addNotify(){ + public void addNotify() { super.addNotify(); - synchronized (lock){ + synchronized (lock) { hasNativePeer.set(true); - System.out.println("EDT: addNotify"); } - + requestFocusInWindow(); } @Override - public void removeNotify(){ - synchronized (lock){ + public void removeNotify() { + synchronized (lock) { hasNativePeer.set(false); - System.out.println("EDT: removeNotify"); } - + super.removeNotify(); } - + @Override - public void paint(Graphics g){ + public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; - synchronized (lock){ + synchronized (lock) { g2d.drawImage(img, transformOp, 0, 0); } } - - public boolean checkVisibilityState(){ - if (!hasNativePeer.get()){ - if (strategy != null){ + + public boolean checkVisibilityState() { + if (!hasNativePeer.get()) { + if (strategy != null) { // strategy.dispose(); strategy = null; - System.out.println("OGL: Not visible. Destroy strategy."); } return false; } - + boolean currentShowing = isShowing(); - if (showing.getAndSet(currentShowing) != currentShowing){ - if (currentShowing){ - System.out.println("OGL: Enter showing state."); - }else{ - System.out.println("OGL: Exit showing state."); - } - } + showing.set(currentShowing); return currentShowing; } - - public void repaintInThread(){ + + public void repaintInThread() { // Convert screenshot. byteBuf.clear(); rm.getRenderer().readFrameBuffer(fb, byteBuf); - - synchronized (lock){ + + synchronized (lock) { // All operations on img must be synchronized // as it is accessed from EDT. Screenshots.convertScreenShot2(intBuf, img); repaint(); } } - - public void drawFrameInThread(){ + + public void drawFrameInThread() { // Convert screenshot. byteBuf.clear(); rm.getRenderer().readFrameBuffer(fb, byteBuf); Screenshots.convertScreenShot2(intBuf, img); - - synchronized (lock){ + + synchronized (lock) { // All operations on strategy should be synchronized (?) - if (strategy == null){ + if (strategy == null) { try { - createBufferStrategy(1, + createBufferStrategy(1, new BufferCapabilities( - new ImageCapabilities(true), - new ImageCapabilities(true), - BufferCapabilities.FlipContents.UNDEFINED) - ); + new ImageCapabilities(true), + new ImageCapabilities(true), + BufferCapabilities.FlipContents.UNDEFINED) + ); } catch (AWTException ex) { ex.printStackTrace(); } strategy = getBufferStrategy(); - System.out.println("OGL: Visible. Create strategy."); } - + // Draw screenshot. do { do { Graphics2D g2d = (Graphics2D) strategy.getDrawGraphics(); - if (g2d == null){ - System.out.println("OGL: DrawGraphics was null."); + if (g2d == null) { + Logger.getLogger(AwtPanel.class.getName()).log(Level.WARNING, "OGL: DrawGraphics was null."); return; } - + g2d.setRenderingHint(RenderingHints.KEY_RENDERING, - RenderingHints.VALUE_RENDER_SPEED); - + RenderingHints.VALUE_RENDER_SPEED); + g2d.drawImage(img, transformOp, 0, 0); g2d.dispose(); strategy.show(); @@ -212,27 +203,28 @@ public class AwtPanel extends Canvas implements SceneProcessor { } while (strategy.contentsLost()); } } - - public boolean isActiveDrawing(){ + + public boolean isActiveDrawing() { return paintMode != PaintMode.OnRequest && showing.get(); } - - public void attachTo(boolean overrideMainFramebuffer, ViewPort ... vps){ - if (viewPorts.size() > 0){ - for (ViewPort vp : viewPorts){ + + public void attachTo(boolean overrideMainFramebuffer, ViewPort... vps) { + if (viewPorts.size() > 0) { + for (ViewPort vp : viewPorts) { vp.setOutputFrameBuffer(null); } - viewPorts.get(viewPorts.size()-1).removeProcessor(this); + viewPorts.get(viewPorts.size() - 1).removeProcessor(this); } - + viewPorts.addAll(Arrays.asList(vps)); - viewPorts.get(viewPorts.size()-1).addProcessor(this); - + viewPorts.get(viewPorts.size() - 1).addProcessor(this); + this.attachAsMain = overrideMainFramebuffer; } - + + @Override public void initialize(RenderManager rm, ViewPort vp) { - if (this.rm == null){ + if (this.rm == null) { // First time called in OGL thread this.rm = rm; reshapeInThread(1, 1); @@ -242,59 +234,61 @@ public class AwtPanel extends Canvas implements SceneProcessor { private void reshapeInThread(int width, int height) { byteBuf = BufferUtils.ensureLargeEnough(byteBuf, width * height * 4); intBuf = byteBuf.asIntBuffer(); - + if (fb != null) { fb.dispose(); fb = null; } - + fb = new FrameBuffer(width, height, 1); fb.setDepthBuffer(Format.Depth); fb.setColorBuffer(Format.RGB8); fb.setSrgb(srgb); - - if (attachAsMain){ + + if (attachAsMain) { rm.getRenderer().setMainFrameBufferOverride(fb); } - - synchronized (lock){ + + synchronized (lock) { img = new BufferedImage(width, height, BufferedImage.TYPE_INT_BGR); } - + // synchronized (lock){ // img = (BufferedImage) getGraphicsConfiguration().createCompatibleImage(width, height); // } - AffineTransform tx = AffineTransform.getScaleInstance(1, -1); tx.translate(0, -img.getHeight()); transformOp = new AffineTransformOp(tx, AffineTransformOp.TYPE_NEAREST_NEIGHBOR); - - for (ViewPort vp : viewPorts){ - if (!attachAsMain){ + + for (ViewPort vp : viewPorts) { + if (!attachAsMain) { vp.setOutputFrameBuffer(fb); } vp.getCamera().resize(width, height, true); - + // NOTE: Hack alert. This is done ONLY for custom framebuffers. // Main framebuffer should use RenderManager.notifyReshape(). - for (SceneProcessor sp : vp.getProcessors()){ + for (SceneProcessor sp : vp.getProcessors()) { sp.reshape(vp, width, height); } } } + @Override public boolean isInitialized() { return fb != null; } + @Override public void preFrame(float tpf) { } + @Override public void postQueue(RenderQueue rq) { } - + @Override - public void invalidate(){ + public void invalidate() { // For "PaintMode.OnDemand" only. repaintRequest.set(true); } @@ -322,18 +316,21 @@ public class AwtPanel extends Canvas implements SceneProcessor { } } } - + + @Override public void postFrame(FrameBuffer out) { - if (!attachAsMain && out != fb){ + if (!attachAsMain && out != fb) { throw new IllegalStateException("Why did you change the output framebuffer?"); } - + // onFrameEnd(); } - + + @Override public void reshape(ViewPort vp, int w, int h) { } + @Override public void cleanup() { } }