# HG changeset patch # User Shinji KONO # Date 1400856741 -32400 # Node ID bce2ef0a2e7909da0acf6fabee8da6b54496d484 # Parent 918dc3ee1c7943b28ee79a063d990fc4ac23de94 use ProtocolContext.sendMessage for upward command diff -r 918dc3ee1c79 -r bce2ef0a2e79 src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Fri May 23 21:48:50 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/MyRfbProto.java Fri May 23 23:52:21 2014 +0900 @@ -109,10 +109,10 @@ public void run() { - byte b[] = new byte[4096]; for (;;) { try { - int c = is.readByte(b); + final byte b[] = new byte[4096]; + final int c = is.readByte(b); if (c <= 0) throw new IOException(); if (isRoot()) { @@ -134,7 +134,14 @@ } } } else if (b[0] == ClientToServerMessage.SERVER_CHANGE_REQUEST) { - context.getWriter().write(b); + ClientToServerMessage sc = new ClientToServerMessage() { + @Override + public void send(Writer writer) + throws TransportException { + writer.write(b,0,c); + } + }; + context.sendMessage(sc); } // System.out.println("client read "+c); } catch (Exception e) { @@ -264,10 +271,6 @@ return rfbMinor; } - public void screenChangeRequest() throws TransportException { - String adr = echo.getMyAddress(); - new ScreenChangeRequest(adr).send(context.getWriter()); - } private void sendProxyFlag(Writer writer) throws TransportException { if (proxyFlag) @@ -471,5 +474,9 @@ if (context!=null) context.cleanUpSession(null); } + + public String getMyAddress() { + return echo.getMyAddress(); + } } diff -r 918dc3ee1c79 -r bce2ef0a2e79 src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java --- a/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java Fri May 23 21:48:50 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/treevnc/ScreenChangeRequest.java Fri May 23 23:52:21 2014 +0900 @@ -19,7 +19,7 @@ * length - U8 array - text */ public class ScreenChangeRequest implements ClientToServerMessage { - private final String bytes; + final String bytes; public ScreenChangeRequest(String adr) { this.bytes = adr; diff -r 918dc3ee1c79 -r bce2ef0a2e79 src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java --- a/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Fri May 23 21:48:50 2014 +0900 +++ b/src/viewer_swing/java/com/glavsoft/viewer/swing/SwingViewerWindow.java Fri May 23 23:52:21 2014 +0900 @@ -53,6 +53,8 @@ import java.util.concurrent.TimeUnit; import java.util.logging.Logger; +import jp.ac.u_ryukyu.treevnc.ScreenChangeRequest; + public class SwingViewerWindow implements IChangeSettingsListener { public static final int FS_SCROLLING_ACTIVE_BORDER = 20; private JToggleButton zoomFitButton; @@ -823,18 +825,17 @@ JButton screenButton = buttonsBar.createButton("share", "Share my screen", new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - try { - // before change server, data from previous server - // should be stopped. - viewer.setCuiVersion(true); - viewer.getRfb().screenChangeRequest(); - } catch (TransportException e1) { - } + // before change server, data from previous server + // should be stopped. + viewer.setCuiVersion(true); + String adr = viewer.getRfb().getMyAddress(); + context.sendMessage(new ScreenChangeRequest(adr)); } }); kbdButtons.add(screenButton); + ModifierButtonEventListener modifierButtonListener = new ModifierButtonEventListener(); modifierButtonListener.addButton(KeyEvent.VK_CONTROL, ctrlButton); modifierButtonListener.addButton(KeyEvent.VK_ALT, altButton);