diff --git a/bigbluebutton-client/resources/prod/bbb-deskshare-applet-0.64.jar b/bigbluebutton-client/resources/prod/bbb-deskshare-applet-0.64.jar index 514d1748de987b6c0dcc9af43613ffebb922e761..1d2ccefa78376728c6b4b48872beb6e50a52a455 100755 Binary files a/bigbluebutton-client/resources/prod/bbb-deskshare-applet-0.64.jar and b/bigbluebutton-client/resources/prod/bbb-deskshare-applet-0.64.jar differ diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/BlockManager.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/BlockManager.java index 466266dede28066e4d328868b12ad9dfb096bc6a..b240b0cfb66ec031704125aec30bc72313cb2012 100755 --- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/BlockManager.java +++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/BlockManager.java @@ -59,9 +59,12 @@ public class BlockManager { public void processCapturedScreen(BufferedImage capturedScreen) { long start = System.currentTimeMillis(); - Vector<Integer> changedBlocks = new Vector<Integer>(); + Vector<Integer> changedBlocks = new Vector<Integer>(); /* + int rowCount = 0; + for (int row = 1; row <= numRows; row++) { + changedBlocks = new Vector<Integer>(); for (int col = 1; col <= numColumns; col++) { Block block = blocksMap.get(new Integer(row * col)); if (block.hasChanged(capturedScreen)) { @@ -72,17 +75,24 @@ public class BlockManager { notifyChangedBlockListener(new BlockMessage(changedBlocks)); } */ + int numberOfBlocks = numColumns * numRows; for (int position = 1; position <= numberOfBlocks; position++) { Block block = blocksMap.get(new Integer(position)); if (block.hasChanged(capturedScreen)) { changedBlocks.add(new Integer(position)); } + + if ((position % numColumns == 0) && (changedBlocks.size() > 0)) { + Integer[] bc = new Integer[changedBlocks.size()]; + System.arraycopy(changedBlocks.toArray(), 0, bc, 0, bc.length); + changedBlocks.clear(); + notifyChangedBlockListener(new BlockMessage(bc)); + } } - if (changedBlocks.size() > 0) - notifyChangedBlockListener(new BlockMessage(changedBlocks)); + long end = System.currentTimeMillis(); -// System.out.println("ProcessCapturedScreen took " + (end-start) + " ms."); + } private void notifyChangedBlockListener(BlockMessage position) { diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/BlockMessage.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/BlockMessage.java index 65651adfd9a4502ea0a15c55c269858ae0128ad7..93f8d197c01ff3eec1164fc58bb6ac1531131358 100755 --- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/BlockMessage.java +++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/BlockMessage.java @@ -19,13 +19,11 @@ */ package org.bigbluebutton.deskshare.client.net; -import java.util.Vector; - public class BlockMessage implements Message { - private Vector<Integer> blocks; + private Integer[] blocks; - public BlockMessage(Vector<Integer> blocks) { + public BlockMessage(Integer[] blocks) { this.blocks = blocks; } @@ -34,7 +32,7 @@ public class BlockMessage implements Message { return MessageType.BLOCK; } - public Vector<Integer> getBlocks() { + public Integer[] getBlocks() { return blocks; } } diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkSocketStreamSender.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkSocketStreamSender.java index 5a61c39417c19ba1caa8271d9ed8e060a6b8a0d4..fb36a6da8a13594a4e6a3c7dea2cd90d2c0f926b 100755 --- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkSocketStreamSender.java +++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkSocketStreamSender.java @@ -136,7 +136,7 @@ public class NetworkSocketStreamSender implements Runnable { dataToSend.reset(); BlockStreamProtocolEncoder.encodeRoomAndSequenceNumber(room, seqNumGenerator.getNext(), dataToSend); - Object[] changedBlocks = ((BlockMessage)message).getBlocks().toArray(); + Integer[] changedBlocks = ((BlockMessage)message).getBlocks(); BlockStreamProtocolEncoder.numBlocksChanged(changedBlocks.length, dataToSend); // System.out.println("Number of blocks changed: " + changedBlocks.length);