# HG changeset patch # User YU # Date 1410559767 -32400 # Node ID e046eb8a3ac1b4af82719a0449642c6d7a2cae6d # Parent a73b8a20e2334924fcf8c21d6350f188f35543dc succeed to repaint another viewer diff -r a73b8a20e233 -r e046eb8a3ac1 src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java --- a/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java Sat Sep 13 04:57:52 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java Sat Sep 13 07:09:27 2014 +0900 @@ -17,7 +17,7 @@ public class ReceiveServerInitMessage extends CodeSegment { - private Receiver info = ids.create(CommandType.PEEK); + private Receiver info = ids.create(CommandType.TAKE); public ReceiveServerInitMessage(){ @@ -35,7 +35,7 @@ SwingViewerWindowFactory viewerWindowFactory = new SwingViewerWindowFactory(true, false, viewer); ProtocolSettings settings = ProtocolSettings.getDefaultSettings(); Protocol context = new Protocol(null, null, null, settings); - + //context.createMessageQueue(); // need clear Queue ServerInitMessage serverInitMessage = info.asClass(ServerInitMessage.class); context.setPixelFormat(serverInitMessage.getPixelFormat()); context.setFbWidth(serverInitMessage.getFrameBufferWidth()); @@ -44,8 +44,11 @@ SwingViewerWindow viewerWindow = viewerWindowFactory.createViewerWindow(context, settings, viewer.getUiSettings(), null, null); IRepaintController repaintController = viewerWindow.getSurface(); - Renderer renderer = repaintController.createRenderer(null, 1280, 800, context.getPixelFormat()); - + Renderer renderer = repaintController.createRenderer(null, serverInitMessage.getFrameBufferWidth(), serverInitMessage.getFrameBufferHeight(), context.getPixelFormat()); + RenderAndControllerHolder holder = new RenderAndControllerHolder(renderer, repaintController); + ods.put("Holder", holder); + + new ReceiveUpdateRectangle(); } } diff -r a73b8a20e233 -r e046eb8a3ac1 src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveUpdateRectangle.java Sat Sep 13 07:09:27 2014 +0900 @@ -0,0 +1,45 @@ +package jp.ac.u_ryukyu.alicevnc; + +import com.glavsoft.exceptions.TransportException; +import com.glavsoft.rfb.encoding.decoder.DecodeInfo; +import com.glavsoft.rfb.encoding.decoder.FramebufferUpdateRectangle; +import com.glavsoft.rfb.encoding.decoder.ZRLEDecoder; + +import alice.codesegment.CodeSegment; +import alice.datasegment.CommandType; +import alice.datasegment.Receiver; + +public class ReceiveUpdateRectangle extends CodeSegment{ + + private Receiver info = ids.create(CommandType.PEEK); + private Receiver info1 = ids.create(CommandType.TAKE); + + public ReceiveUpdateRectangle(){ + info.setKey("Holder"); + info1.setKey("decodeInfo"); + } + + public void run() { + ZRLEDecoder decoder = new ZRLEDecoder(); + RenderAndControllerHolder holder = info.asClass(RenderAndControllerHolder.class); + DecodeInfo decodeInfo = info1.asClass(DecodeInfo.class); + + try { + decoder.decode(decodeInfo, holder.renderer); + FramebufferUpdateRectangle rect = new FramebufferUpdateRectangle(); + rect.x = decodeInfo.x; + rect.y = decodeInfo.y; + rect.height = decodeInfo.height; + rect.width = decodeInfo.width; + rect.encodingType = decodeInfo.encodingType; + + holder.repaintController.repaintBitmap(rect); + } catch (TransportException e) { + e.printStackTrace(); + } + + new ReceiveUpdateRectangle(); + + } + +} diff -r a73b8a20e233 -r e046eb8a3ac1 src/main/java/jp/ac/u_ryukyu/alicevnc/RenderAndControllerHolder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/RenderAndControllerHolder.java Sat Sep 13 07:09:27 2014 +0900 @@ -0,0 +1,17 @@ +package jp.ac.u_ryukyu.alicevnc; + +import com.glavsoft.drawing.Renderer; +import com.glavsoft.rfb.IRepaintController; + +public class RenderAndControllerHolder { + + public Renderer renderer; + public IRepaintController repaintController; + + public RenderAndControllerHolder(Renderer renderer, + IRepaintController repaintController) { + this.repaintController = repaintController; + this.renderer = renderer; + } + +}