diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java index 82c84ef4d..c8be51d6a 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/ScreenShareSession.java @@ -31,6 +31,9 @@ import org.jivesoftware.smackx.jingle.IncomingJingleSession; import javax.swing.*; import java.awt.*; +import java.awt.event.WindowListener; +import java.awt.event.WindowEvent; +import java.awt.event.WindowAdapter; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; @@ -81,7 +84,11 @@ public class ScreenShareSession extends JingleMediaSession { window.setLocation(0, 0); window.setSize(600, 600); - window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + window.addWindowListener(new WindowAdapter(){ + public void windowClosed(WindowEvent e) { + receiver.stop(); + } + }); try { receiver = new ImageReceiver(InetAddress.getByName("0.0.0.0"), getRemote().getPort(), getLocal().getPort(), width, height); diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java index 6e2e56d47..a77070938 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageReceiver.java @@ -142,4 +142,9 @@ public class ImageReceiver extends Canvas { public void setDecoder(ImageDecoder decoder) { this.decoder = decoder; } + + public void stop(){ + this.on=false; + socket.close(); + } } diff --git a/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java b/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java index 2d6e75553..4b29628a8 100644 --- a/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java +++ b/jingle/extension/source/org/jivesoftware/smackx/jingle/mediaimpl/sshare/api/ImageTransmitter.java @@ -177,4 +177,13 @@ public class ImageTransmitter implements Runnable { public void setEncoder(ImageEncoder encoder) { this.encoder = encoder; } + + /** + * Stops Transmitter + */ + public void stop(){ + this.transmit=false; + this.on=false; + socket.close(); + } }