diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/Block.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/Block.java
index fed3cf6c5c88dbbe24c516cf2e27caa4e2edbe65..e812a1c67934c0bfe770f15ef77245011c978c22 100755
--- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/Block.java
+++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/blocks/Block.java
@@ -83,11 +83,14 @@ public final class Block {
     	return false;
     }
     
+    public void sent() {
+    	dirtyBlock.set(false);
+    }
+    
     public EncodedBlockData encode() {   
     	int[] pixelsCopy = new int[capturedPixels.length];
     	
-    	synchronized (pixelsLock) { 
-    		dirtyBlock.set(false);
+    	synchronized (pixelsLock) {     		
             System.arraycopy(capturedPixels, 0, pixelsCopy, 0, capturedPixels.length);
 		}
     	
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 110855874370644ac17e4fb0a42891e45e26ae69..9d8b8ba462e7c6b6de135ae04c5cddf78e83f347 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
@@ -68,7 +68,7 @@ public class BlockManager {
 		long end = System.currentTimeMillis();
 //		System.out.println("ProcessCapturedScreen took " + (end-start) + " ms.");
     }
-    
+        
     private void notifyChangedBlockListener(BlockMessage position) {
     	listeners.onChangedBlock(position);
     }
@@ -82,6 +82,11 @@ public class BlockManager {
 		listeners = null;
 	}
     
+	public void blockSent(int position) {
+		Block block = (Block) blocksMap.get(new Integer(position));
+		block.sent();
+	}
+	
 	public Block getBlock(int position) {
 		return (Block) blocksMap.get(new Integer(position));
 	}
diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkHttpStreamSender.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkHttpStreamSender.java
index f675ead5fd2968a483e9cbf8031cb9de1da978f6..0f2c31c90a9e6b2909b1d7ff70931ba2caf8b984 100755
--- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkHttpStreamSender.java
+++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkHttpStreamSender.java
@@ -169,6 +169,7 @@ public class NetworkHttpStreamSender implements Runnable {
 			EncodedBlockData block = retriever.getBlockToSend(((BlockMessage)message).getPosition());
 			BlockVideoData	bv = new BlockVideoData(room, block.getPosition(), block.getVideoData(), false /* should remove later */);									
 			sendBlockData(bv);
+			retriever.blockSent(block.getPosition());
 		} else if (message.getMessageType() == Message.MessageType.CURSOR) {
 			CursorMessage msg = (CursorMessage)message;
 			sendCursor(msg.getMouseLocation(), msg.getRoom());
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 3c7dee5e84fec82e65e0e2a034965f94b1426140..1ef8482bf275bda20c7e983a207b16ca6f6ff937 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
@@ -134,6 +134,7 @@ public class NetworkSocketStreamSender implements Runnable {
 			EncodedBlockData block = retriever.getBlockToSend(((BlockMessage)message).getPosition());
 			BlockVideoData	bv = new BlockVideoData(room, block.getPosition(), block.getVideoData(), false /* should remove later */);									
 			sendBlock(bv);
+			retriever.blockSent(block.getPosition());
 		} else if (message.getMessageType() == Message.MessageType.CURSOR) {
 			CursorMessage msg = (CursorMessage)message;
 			sendCursor(msg.getMouseLocation(), msg.getRoom());
diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkStreamSender.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkStreamSender.java
index 6186185f06a5d7beb32b34cb314be3e17aa141a2..70a7fc1061f6df0e69beeb1d7a5081bee263f5a4 100755
--- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkStreamSender.java
+++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NetworkStreamSender.java
@@ -192,6 +192,10 @@ public class NetworkStreamSender implements NextBlockRetriever, NetworkStreamLis
 		return false;
 	}
 	
+	public void blockSent(int position) {
+		blockManager.blockSent(position);
+	}
+	
 	public EncodedBlockData getBlockToSend(int position) {		
 		return blockManager.getBlock(position).encode();
 	}	
diff --git a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NextBlockRetriever.java b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NextBlockRetriever.java
index 6fad08b9d80a30886b0da392e8be384023031d76..88adaf5febe200d7a7d065d1428b0660cc7943b7 100755
--- a/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NextBlockRetriever.java
+++ b/deskshare/applet/src/main/java/org/bigbluebutton/deskshare/client/net/NextBlockRetriever.java
@@ -20,6 +20,7 @@
 package org.bigbluebutton.deskshare.client.net;
 
 public interface NextBlockRetriever {
+	public void blockSent(int position);
 	public EncodedBlockData getBlockToSend(int position);
 	public Message getNextMessageToSend() throws InterruptedException;
 }