# HG changeset patch # User YU # Date 1410605288 -32400 # Node ID 9d932f70b29a3fb3884d939536a53e7c44f48309 # Parent e046eb8a3ac1b4af82719a0449642c6d7a2cae6d create MyServerInitMessage. ServerInitMessage could not send with MessagePack for including PixelFormat class diff -r e046eb8a3ac1 -r 9d932f70b29a src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNC.java --- a/src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNC.java Sat Sep 13 07:09:27 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/AliceVNC.java Sat Sep 13 19:48:08 2014 +0900 @@ -27,12 +27,11 @@ Viewer viewer = new Viewer(parser); SwingUtilities.invokeLater(viewer); + new ReceiveServerInitMessage(); } if (conf.getViewerFlag()){ - + new ReceiveServerInitMessage("parent"); } - - new ReceiveServerInitMessage(); } } diff -r e046eb8a3ac1 -r 9d932f70b29a src/main/java/jp/ac/u_ryukyu/alicevnc/MyServerInitMessage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/MyServerInitMessage.java Sat Sep 13 19:48:08 2014 +0900 @@ -0,0 +1,63 @@ +package jp.ac.u_ryukyu.alicevnc; + +import org.msgpack.annotation.Message; + +import com.glavsoft.rfb.encoding.PixelFormat; +import com.glavsoft.rfb.encoding.ServerInitMessage; + +@Message +public class MyServerInitMessage { + public int width; + public int height; + public String name; + + // pixel format info + public byte bitsPerPixel; + public byte depth; + public byte bigEndianFlag; + public byte trueColourFlag; + public short redMax; + public short greenMax; + public short blueMax; + public byte redShift; + public byte greenShift; + public byte blueShift; + + public MyServerInitMessage(){ + + } + + public MyServerInitMessage(ServerInitMessage serverInitMessage) { + height = serverInitMessage.getFrameBufferHeight(); + width = serverInitMessage.getFrameBufferWidth(); + name = serverInitMessage.getName(); + PixelFormat pixelFormat = serverInitMessage.getPixelFormat(); + bitsPerPixel = pixelFormat.bitsPerPixel; + depth = pixelFormat.depth; + bigEndianFlag = pixelFormat.bigEndianFlag; + trueColourFlag = pixelFormat.trueColourFlag; + redMax = pixelFormat.redMax; + greenMax = pixelFormat.greenMax; + blueMax = pixelFormat.blueMax; + redShift = pixelFormat.redShift; + greenShift = pixelFormat.greenShift; + blueShift = pixelFormat.blueShift; + } + + public PixelFormat getPixelFormat(){ + PixelFormat pixelFormat = new PixelFormat(); + + pixelFormat.bitsPerPixel = bitsPerPixel; + pixelFormat.depth = depth; + pixelFormat.bigEndianFlag = bigEndianFlag; + pixelFormat.trueColourFlag = trueColourFlag; + pixelFormat.redMax = redMax; + pixelFormat.greenMax = greenMax; + pixelFormat.blueMax = blueMax; + pixelFormat.redShift = redShift; + pixelFormat.greenShift = greenShift; + pixelFormat.blueShift = blueShift; + + return pixelFormat; + } +} diff -r e046eb8a3ac1 -r 9d932f70b29a src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java --- a/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java Sat Sep 13 07:09:27 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/alicevnc/ReceiveServerInitMessage.java Sat Sep 13 19:48:08 2014 +0900 @@ -2,6 +2,7 @@ import com.glavsoft.drawing.Renderer; import com.glavsoft.rfb.IRepaintController; +import com.glavsoft.rfb.encoding.PixelFormat; import com.glavsoft.rfb.encoding.ServerInitMessage; import com.glavsoft.rfb.protocol.Protocol; import com.glavsoft.rfb.protocol.ProtocolSettings; @@ -17,15 +18,23 @@ public class ReceiveServerInitMessage extends CodeSegment { - private Receiver info = ids.create(CommandType.TAKE); - - + private Receiver info = ids.create(CommandType.PEEK); + + public ReceiveServerInitMessage(){ info.setKey("ServerInitMessage"); } - + + public ReceiveServerInitMessage(String key){ + info.setKey(key, "MyServerInitMessage"); + } + public void run() { - + PixelFormat pixelFormat = null; + int width = 0; + int height = 0; + String name = "defalut"; + Parser parser = new Parser(); ParametersHandler.completeParserOptions(parser); if (parser.isSet(ParametersHandler.ARG_HELP)) { @@ -36,18 +45,38 @@ 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()); - context.setFbHeight(serverInitMessage.getFrameBufferHeight()); - context.setRemoteDesktopName(serverInitMessage.getName()); + if ("local".equals(info.from)){ + ServerInitMessage serverInitMessage = info.asClass(ServerInitMessage.class); + pixelFormat = serverInitMessage.getPixelFormat(); + width = serverInitMessage.getFrameBufferWidth(); + height = serverInitMessage.getFrameBufferHeight(); + name = serverInitMessage.getName(); + + MyServerInitMessage myServerInitMessage = new MyServerInitMessage(serverInitMessage); + myServerInitMessage.width = width; + myServerInitMessage.height = height; + myServerInitMessage.name = name; + + ods.put("MyServerInitMessage", myServerInitMessage); + } else { + MyServerInitMessage serverInitMessage = info.asClass(MyServerInitMessage.class); + pixelFormat = serverInitMessage.getPixelFormat(); + width = serverInitMessage.width; + height = serverInitMessage.height; + name = serverInitMessage.name; + } + + context.setPixelFormat(pixelFormat); + context.setFbWidth(width); + context.setFbHeight(height); + context.setRemoteDesktopName(name); SwingViewerWindow viewerWindow = viewerWindowFactory.createViewerWindow(context, settings, viewer.getUiSettings(), null, null); IRepaintController repaintController = viewerWindow.getSurface(); - Renderer renderer = repaintController.createRenderer(null, serverInitMessage.getFrameBufferWidth(), serverInitMessage.getFrameBufferHeight(), context.getPixelFormat()); + Renderer renderer = repaintController.createRenderer(null, width, height, context.getPixelFormat()); RenderAndControllerHolder holder = new RenderAndControllerHolder(renderer, repaintController); ods.put("Holder", holder); - + new ReceiveUpdateRectangle(); }