From 9ad4dc45fadd2df4754723912989a605dbc4d933 Mon Sep 17 00:00:00 2001 From: Sebastien Vincent Date: Wed, 16 Dec 2009 07:55:49 +0000 Subject: [PATCH] Disable desktop streaming by default (need to pass --desktop-stream argument). --- .../neomedia/device/ImageStreamingAuto.java | 7 +++++-- .../neomedia/device/JmfDeviceDetector.java | 20 +++++++++++++++++-- .../util/launchutils/LaunchArgHandler.java | 14 +++++++++++++ 3 files changed, 37 insertions(+), 4 deletions(-) diff --git a/src/net/java/sip/communicator/impl/neomedia/device/ImageStreamingAuto.java b/src/net/java/sip/communicator/impl/neomedia/device/ImageStreamingAuto.java index 464174a11..2d97a1a0d 100644 --- a/src/net/java/sip/communicator/impl/neomedia/device/ImageStreamingAuto.java +++ b/src/net/java/sip/communicator/impl/neomedia/device/ImageStreamingAuto.java @@ -20,16 +20,19 @@ public class ImageStreamingAuto { /** * Add capture devices. + * + * @throws Exception if problem when adding capture devices */ - public ImageStreamingAuto() + public ImageStreamingAuto() throws Exception { - String name = "DesktopStreaming"; + String name = "Desktop streaming"; CaptureDeviceInfo devInfo = new CaptureDeviceInfo(name, new MediaLocator(ImageStreamingUtils.LOCATOR_PREFIX + name), DataSource.getFormats()); /* add to JMF device manager */ CaptureDeviceManager.addDevice(devInfo); + CaptureDeviceManager.commit(); } } diff --git a/src/net/java/sip/communicator/impl/neomedia/device/JmfDeviceDetector.java b/src/net/java/sip/communicator/impl/neomedia/device/JmfDeviceDetector.java index 75a988d9c..89998025a 100644 --- a/src/net/java/sip/communicator/impl/neomedia/device/JmfDeviceDetector.java +++ b/src/net/java/sip/communicator/impl/neomedia/device/JmfDeviceDetector.java @@ -184,8 +184,24 @@ private void detectCaptureDevices() } /* Desktop capture */ - /* it should not throw exception */ - new ImageStreamingAuto(); + + /* for the moment desktop streaming is disabled by default, + * user needs to add --desktop-stream argument: + * ant run -Dargs=--desktop-stream + */ + String allowDs = System.getProperty("net.java.sip.communicator.impl.neomedia.imgstreaming"); + + if(allowDs != null && allowDs.equals("true")) + { + try + { + new ImageStreamingAuto(); + } + catch(Throwable exc) + { + logger.debug("No desktop streaming available: " + exc.getMessage(), exc); + } + } } /** diff --git a/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java b/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java index 2dce87629..0458f30c5 100644 --- a/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java +++ b/src/net/java/sip/communicator/util/launchutils/LaunchArgHandler.java @@ -249,6 +249,11 @@ else if (args[i].equals("--multiple") || args[i].equals("-m")) returnAction = ACTION_CONTINUE_LOCK_DISABLED; continue; } + else if (args[i].equals("--desktop-stream") || args[i].equals("-s")) + { + handleDesktopStreaming(); + break; + } //if this is the last arg and it's not an option then it's probably //an URI else if ( i == args.length - 1 @@ -288,6 +293,14 @@ private void handleIPv4Enforcement() System.setProperty("java.net.preferIPv6Addresses", "false"); } + /** + * Allows to use desktop streaming as video device. + */ + private void handleDesktopStreaming() + { + System.setProperty("net.java.sip.communicator.impl.neomedia.imgstreaming", "true"); + } + /** * Passes uriArg to our uri manager for handling. * @@ -444,6 +457,7 @@ public void handleHelpArg() System.out.println(" -m, --multiple do not ensure single instance"); System.out.println(" -6, --ipv6 prefer IPv6 addresses where possible only"); System.out.println(" -4, --ipv4 forces use of IPv4 only"); + System.out.println(" -s, --desktop-stream use desktop streaming"); System.out.println(" -v, --version display the current version and exit"); }