Repository: openmeetings Updated Branches: refs/heads/master 7bc1800f9 -> 381838de8
[OPENMEETINGS-1714] more issues are fixed Project: http://git-wip-us.apache.org/repos/asf/openmeetings/repo Commit: http://git-wip-us.apache.org/repos/asf/openmeetings/commit/381838de Tree: http://git-wip-us.apache.org/repos/asf/openmeetings/tree/381838de Diff: http://git-wip-us.apache.org/repos/asf/openmeetings/diff/381838de Branch: refs/heads/master Commit: 381838de81b518b6330ada11c0ba81b426a28e1f Parents: 7bc1800 Author: Maxim Solodovnik <[email protected]> Authored: Fri Sep 29 13:16:53 2017 +0700 Committer: Maxim Solodovnik <[email protected]> Committed: Fri Sep 29 13:16:53 2017 +0700 ---------------------------------------------------------------------- .../db/dto/basic/ServiceResult.java | 4 +- .../openmeetings/screenshare/CaptureScreen.java | 26 ++-- .../apache/openmeetings/screenshare/Core.java | 31 +++-- .../screenshare/ScreenV1Encoder.java | 30 ++--- .../screenshare/gui/ScreenDimensions.java | 120 +++++++++++++++---- .../gui/ScreenHeightMouseListener.java | 8 +- .../screenshare/gui/ScreenMouseListener.java | 6 +- .../screenshare/gui/ScreenSharerFrame.java | 100 +++++++++------- .../gui/ScreenWidthMouseListener.java | 8 +- .../screenshare/gui/ScreenXMouseListener.java | 6 +- .../screenshare/gui/ScreenYMouseListener.java | 6 +- .../openmeetings/screenshare/job/EncodeJob.java | 19 +-- .../openmeetings/screenshare/job/RemoteJob.java | 22 ++-- .../util/OpenmeetingsVariables.java | 5 +- .../openmeetings/web/app/Application.java | 3 +- 15 files changed, 242 insertions(+), 152 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java ---------------------------------------------------------------------- diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java index eb617d1..1bed23b 100644 --- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java +++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/basic/ServiceResult.java @@ -31,8 +31,8 @@ import org.apache.openmeetings.util.OmException; @XmlAccessorType(XmlAccessType.FIELD) public class ServiceResult implements Serializable { private static final long serialVersionUID = 1L; - public static ServiceResult UNKNOWN = new ServiceResult(OmException.UNKNOWN.getKey(), Type.ERROR); - public static ServiceResult NO_PERMISSION = new ServiceResult("error.notallowed", Type.ERROR); + public static final ServiceResult UNKNOWN = new ServiceResult(OmException.UNKNOWN.getKey(), Type.ERROR); + public static final ServiceResult NO_PERMISSION = new ServiceResult("error.notallowed", Type.ERROR); private String message; private String type; @XmlType(namespace="org.apache.openmeetings.db.dto.basic.type") http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java index 0ce3502..eb7fc8d 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/CaptureScreen.java @@ -19,7 +19,6 @@ package org.apache.openmeetings.screenshare; import static org.apache.openmeetings.screenshare.Core.QUARTZ_GROUP_NAME; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.FPS; import static org.apache.openmeetings.screenshare.util.Util.getQurtzProps; import static org.quartz.SimpleScheduleBuilder.simpleSchedule; import static org.slf4j.LoggerFactory.getLogger; @@ -29,6 +28,7 @@ import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import org.apache.openmeetings.screenshare.gui.ScreenDimensions; import org.apache.openmeetings.screenshare.job.CursorJob; import org.apache.openmeetings.screenshare.job.EncodeJob; import org.apache.openmeetings.screenshare.job.SendJob; @@ -50,7 +50,7 @@ public class CaptureScreen extends Thread { private static final Logger log = getLogger(CaptureScreen.class); private final static String QUARTZ_CURSOR_TRIGGER_NAME = "CursorTrigger"; private final static String QUARTZ_CURSOR_JOB_NAME = "CursorJob"; - private Core core; + private final Core core; private int timestampDelta; private volatile AtomicInteger timestamp = new AtomicInteger(0); private volatile AtomicBoolean sendFrameGuard = new AtomicBoolean(false); @@ -65,6 +65,8 @@ public class CaptureScreen extends Thread { private Number streamId; private boolean startPublish = false; private Scheduler _scheduler; + private final JobDetail cursorJob; + private final Trigger cursorTrigger; public CaptureScreen(Core coreScreenShare, IScreenShare client, String host, String app, int port) { core = coreScreenShare; @@ -72,6 +74,12 @@ public class CaptureScreen extends Thread { this.host = host; this.app = app; this.port = port; + cursorJob = JobBuilder.newJob(CursorJob.class).withIdentity(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME).build(); + cursorTrigger = TriggerBuilder.newTrigger() + .withIdentity(QUARTZ_CURSOR_TRIGGER_NAME, QUARTZ_GROUP_NAME) + .withSchedule(simpleSchedule().withIntervalInMilliseconds(1000 / Math.min(5, core.getDim().getFPS())).repeatForever()) + .build(); + cursorJob.getJobDataMap().put(CursorJob.CAPTURE_KEY, this); } private Scheduler getScheduler() { @@ -107,8 +115,8 @@ public class CaptureScreen extends Thread { Thread.sleep(60); } - timestampDelta = 1000 / FPS; - se = new ScreenV1Encoder(3 * FPS); //send keyframe every 3 seconds + timestampDelta = 1000 / core.getDim().getFPS(); + se = new ScreenV1Encoder(core.getDim()); //send keyframe every 3 seconds startTime = System.currentTimeMillis(); JobDetail encodeJob = JobBuilder.newJob(EncodeJob.class).withIdentity("EncodeJob", QUARTZ_GROUP_NAME).build(); @@ -220,12 +228,6 @@ public class CaptureScreen extends Thread { try { Scheduler s = getScheduler(); if (sendCursor) { - JobDetail cursorJob = JobBuilder.newJob(CursorJob.class).withIdentity(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME).build(); - Trigger cursorTrigger = TriggerBuilder.newTrigger() - .withIdentity(QUARTZ_CURSOR_TRIGGER_NAME, QUARTZ_GROUP_NAME) - .withSchedule(simpleSchedule().withIntervalInMilliseconds(1000 / Math.min(5, FPS)).repeatForever()) - .build(); - cursorJob.getJobDataMap().put(CursorJob.CAPTURE_KEY, this); s.scheduleJob(cursorJob, cursorTrigger); } else { s.deleteJob(JobKey.jobKey(QUARTZ_CURSOR_JOB_NAME, QUARTZ_GROUP_NAME)); @@ -234,4 +236,8 @@ public class CaptureScreen extends Thread { log.error("Unexpected Error schedule/unschedule cursor job", e); } } + + public ScreenDimensions getDim() { + return core.getDim(); + } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java index 86e76a8..08af0d1 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java @@ -19,12 +19,6 @@ package org.apache.openmeetings.screenshare; import static java.lang.Boolean.TRUE; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeY; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerHeight; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerWidth; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerY; import static org.apache.openmeetings.screenshare.util.Util.getQurtzProps; import static org.quartz.SimpleScheduleBuilder.simpleSchedule; import static org.slf4j.LoggerFactory.getLogger; @@ -38,6 +32,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.LinkedBlockingQueue; +import org.apache.openmeetings.screenshare.gui.ScreenDimensions; import org.apache.openmeetings.screenshare.gui.ScreenSharerFrame; import org.apache.openmeetings.screenshare.job.RemoteJob; import org.quartz.JobBuilder; @@ -65,7 +60,6 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler; public class Core implements IPendingServiceCallback, INetStreamEventHandler { private static final Logger log = getLogger(Core.class); - public static float Ampl_factor = 1f; final static String QUARTZ_GROUP_NAME = "ScreenShare"; final static String QUARTZ_REMOTE_JOB_NAME = "RemoteJob"; final static String QUARTZ_REMOTE_TRIGGER_NAME = "RemoteTrigger"; @@ -107,6 +101,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { private SchedulerFactory schdlrFactory; private Scheduler schdlr; private LinkedBlockingQueue<Map<String, Object>> remoteEvents = new LinkedBlockingQueue<>(); + private final ScreenDimensions dim; private CaptureScreen getCapture() { if (_capture == null) { @@ -121,6 +116,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { // ------------------------------------------------------------------------ public Core(String[] args) { + dim = new ScreenDimensions(); try { System.setProperty("org.terracotta.quartz.skipUpdateCheck", "true"); for (String arg : args) { @@ -222,11 +218,11 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { try { Point mouseP = MouseInfo.getPointerInfo().getLocation(); - float scaleFactor = (1.0f * resizeX) / spinnerWidth; + float scaleFactor = (1.0f * dim.getResizeX()) / dim.getSpinnerWidth(); // Real size: Real mouse position = Resize : X - int x = (int)(Ampl_factor * (mouseP.getX() - spinnerX) * scaleFactor); - int y = (int)(Ampl_factor * (mouseP.getY() - spinnerY) * scaleFactor); + int x = (int)((mouseP.getX() - dim.getSpinnerX()) * scaleFactor); + int y = (int)((mouseP.getY() - dim.getSpinnerY()) * scaleFactor); if (instance.getConnection() != null) { if (Red5.getConnectionLocal() == null) { @@ -256,8 +252,8 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { } Map<String, Object> map = new HashMap<>(); - int scaledWidth = (int)(Ampl_factor * resizeX); - int scaledHeight = (int)(Ampl_factor * resizeY); + int scaledWidth = dim.getResizeX(); + int scaledHeight = dim.getResizeY(); map.put("screenWidth", scaledWidth); map.put("screenHeight", scaledHeight); @@ -329,6 +325,11 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { } } + public void sharingStop() { + startSharing = false; + captureScreenStop("stopStreaming"); + } + public void recordingStop() { startRecording = false; captureScreenStop("stopRecording"); @@ -540,7 +541,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { log.debug("createPublishStream result stream id: {}; name: {}", getCapture().getStreamId(), broadcastId); instance.publish(getCapture().getStreamId(), broadcastId, "live", this); - log.debug("setup capture thread spinnerWidth = {}; spinnerHeight = {};", spinnerWidth, spinnerHeight); + log.debug("setup capture thread spinnerWidth = {}; spinnerHeight = {};", dim.getSpinnerWidth(), dim.getSpinnerHeight()); if (!getCapture().isAlive()) { getCapture().setSendCursor(startSharing); @@ -603,4 +604,8 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler { public LinkedBlockingQueue<Map<String, Object>> getRemoteEvents() { return remoteEvents; } + + public ScreenDimensions getDim() { + return dim; + } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java index b5500bd..7fa9980 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/ScreenV1Encoder.java @@ -18,8 +18,6 @@ */ package org.apache.openmeetings.screenshare; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeY; import static org.red5.io.IoConstants.FLAG_CODEC_SCREEN; import static org.red5.io.IoConstants.FLAG_FRAMETYPE_INTERFRAME; import static org.red5.io.IoConstants.FLAG_FRAMETYPE_KEYFRAME; @@ -33,38 +31,30 @@ import java.io.OutputStream; import java.util.zip.Deflater; import org.apache.mina.core.buffer.IoBuffer; +import org.apache.openmeetings.screenshare.gui.ScreenDimensions; import org.red5.server.net.rtmp.event.VideoData; public class ScreenV1Encoder extends BaseScreenEncoder { private int[][] last = null; - private static int KEY_FRAME_INDEX = 25; private static int DEFAULT_BLOCK_SIZE = 32; private static int DEFAULT_SCREEN_WIDTH = 1920; private static int DEFAULT_SCREEN_HEIGHT = 1080; private int keyFrameIndex; private int frameCount = 0; - private int blockSize; + private int blockSize = DEFAULT_BLOCK_SIZE; private ByteArrayOutputStream ba = new ByteArrayOutputStream(50 + 3 * DEFAULT_SCREEN_WIDTH * DEFAULT_SCREEN_HEIGHT); private byte[] areaBuf = null; private Deflater d = new Deflater(Deflater.DEFAULT_COMPRESSION); private byte[] zipBuf = null; private VideoData unalteredFrame = null; + private final ScreenDimensions dim; - public ScreenV1Encoder() { - this(KEY_FRAME_INDEX, DEFAULT_BLOCK_SIZE); - } - - public ScreenV1Encoder(int keyFrameIndex) { - this(keyFrameIndex, DEFAULT_BLOCK_SIZE); - } - - //will create square blocks - public ScreenV1Encoder(int keyFrameIndex, int blockSize) { - this.keyFrameIndex = keyFrameIndex; + public ScreenV1Encoder(ScreenDimensions dim) { + this.dim = dim; + this.keyFrameIndex = 3 * dim.getFPS(); if (blockSize < 16 || blockSize > 256 || blockSize % 16 != 0) { throw new RuntimeException("Invalid block size passed: " + blockSize + " should be: 'from 16 to 256 in multiples of 16'"); } - this.blockSize = blockSize; areaBuf = new byte[3 * blockSize * blockSize]; zipBuf = new byte[3 * blockSize * blockSize]; @@ -86,7 +76,7 @@ public class ScreenV1Encoder extends BaseScreenEncoder { if (unalteredFrame == null) { ByteArrayOutputStream ba = new ByteArrayOutputStream(200); - Rectangle _area = new Rectangle(resizeX, resizeY); + Rectangle _area = new Rectangle(dim.getResizeX(), dim.getResizeY()); //header ba.write(getTag(FLAG_FRAMETYPE_INTERFRAME, FLAG_CODEC_SCREEN)); writeShort(ba, _area.width + ((blockSize / 16 - 1) << 12)); @@ -189,9 +179,9 @@ public class ScreenV1Encoder extends BaseScreenEncoder { os.write( n & 0xFF); } - public static int[][] getImage(Rectangle screen, Robot robot) { - int[][] buffer = new int[resizeX][resizeY]; - BufferedImage image = resize(robot.createScreenCapture(screen), new Rectangle(resizeX, resizeY)); + public static int[][] getImage(ScreenDimensions dim, Rectangle screen, Robot robot) { + int[][] buffer = new int[dim.getResizeX()][dim.getResizeY()]; + BufferedImage image = resize(robot.createScreenCapture(screen), new Rectangle(dim.getResizeX(), dim.getResizeY())); for (int x = 0; x < image.getWidth(); ++x) { for (int y = 0; y < image.getHeight(); ++y) { buffer[x][y] = image.getRGB(x, y); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenDimensions.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenDimensions.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenDimensions.java index c23e5ef..14c5235 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenDimensions.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenDimensions.java @@ -23,36 +23,41 @@ import java.awt.Toolkit; public class ScreenDimensions { public static final int ROUND_VALUE = 16; + + public enum ScreenQuality { + VeryHigh + , High + , Medium + , Low + } /** * image recalcing value's from the virtual Screen drawer */ - public static int width = 200; - public static int height = 0; + private int width = 200; + private int height = 0; /** * Values calced by the original Screen */ - - public static double ratio = 0; - - public static int widthMax = 0; - public static int heightMax = 0; + private double ratio; + private final int widthMax; + private final int heightMax; /** * Values set by the virtualScreen */ - public static int spinnerWidth = 0; - public static int spinnerHeight = 0; - public static int spinnerX = 0; - public static int spinnerY = 0; + private int spinnerWidth; + private int spinnerHeight; + private int spinnerX; + private int spinnerY; - public static ScreenQuality quality = ScreenQuality.Medium; - public static int FPS = 10; + private ScreenQuality quality = ScreenQuality.Medium; + private int FPS = 10; - public static int resizeX = 640; - public static int resizeY = 480; + private int resizeX; + private int resizeY; - static { + public ScreenDimensions() { Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); ratio = screenSize.getHeight() / screenSize.getWidth(); widthMax = (int)screenSize.getWidth(); @@ -66,10 +71,83 @@ public class ScreenDimensions { resizeY = 400; } - public enum ScreenQuality { - VeryHigh - , High - , Medium - , Low + public int getResizeX() { + return resizeX; + } + + public void setResizeX(int resizeX) { + this.resizeX = resizeX; + } + + public int getResizeY() { + return resizeY; + } + + public void setResizeY(int resizeY) { + this.resizeY = resizeY; + } + + public int getSpinnerWidth() { + return spinnerWidth; + } + + public void setSpinnerWidth(int spinnerWidth) { + this.spinnerWidth = spinnerWidth; + } + + public int getSpinnerHeight() { + return spinnerHeight; + } + + public void setSpinnerHeight(int spinnerHeight) { + this.spinnerHeight = spinnerHeight; + } + + public int getSpinnerX() { + return spinnerX; + } + + public void setSpinnerX(int spinnerX) { + this.spinnerX = spinnerX; + } + + public int getSpinnerY() { + return spinnerY; + } + + public void setSpinnerY(int spinnerY) { + this.spinnerY = spinnerY; + } + + public int getWidth() { + return width; + } + + public int getWidthMax() { + return widthMax; + } + + public int getHeight() { + return height; + } + + public int getHeightMax() { + return heightMax; + } + + public ScreenQuality getQuality() { + return quality; + } + + public void setQuality(ScreenQuality quality) { + this.quality = quality; + } + + public int getFPS() { + return FPS; + } + + public void setFPS(int fPS) { + FPS = fPS; } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenHeightMouseListener.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenHeightMouseListener.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenHeightMouseListener.java index ca7a61b..ee03bc5 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenHeightMouseListener.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenHeightMouseListener.java @@ -25,7 +25,7 @@ import java.awt.event.MouseEvent; import javax.swing.event.MouseInputAdapter; public class ScreenHeightMouseListener extends MouseInputAdapter { - private ScreenSharerFrame frame; + private final ScreenSharerFrame frame; private double y = 0; public ScreenHeightMouseListener(ScreenSharerFrame frame) { @@ -60,10 +60,10 @@ public class ScreenHeightMouseListener extends MouseInputAdapter { } double newY = e.getY(); - int newHeight = ScreenDimensions.spinnerHeight - (int)(y - newY); - int newSpinnerY = ScreenDimensions.spinnerY + newHeight; + int newHeight = frame.getDim().getSpinnerHeight() - (int)(y - newY); + int newSpinnerY = frame.getDim().getSpinnerY() + newHeight; - if (newSpinnerY >= 0 && newSpinnerY <= ScreenDimensions.heightMax) { + if (newSpinnerY >= 0 && newSpinnerY <= frame.getDim().getHeightMax()) { frame.setDoUpdateBounds(false); frame.setSpinnerHeight(newHeight); frame.setDoUpdateBounds(true); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenMouseListener.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenMouseListener.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenMouseListener.java index ced9963..ed561c3 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenMouseListener.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenMouseListener.java @@ -25,7 +25,7 @@ import java.awt.event.MouseEvent; import javax.swing.event.MouseInputAdapter; public class ScreenMouseListener extends MouseInputAdapter { - private ScreenSharerFrame frame; + private final ScreenSharerFrame frame; private int x = 0; private int y = 0; @@ -63,8 +63,8 @@ public class ScreenMouseListener extends MouseInputAdapter { int newX = e.getX(); int newY = e.getY(); - int newXPosition = ScreenDimensions.spinnerX - (this.x - newX); - int newYPosition = ScreenDimensions.spinnerY - (this.y - newY); + int newXPosition = frame.getDim().getSpinnerX() - (this.x - newX); + int newYPosition = frame.getDim().getSpinnerY() - (this.y - newY); if (newXPosition >= 0) { frame.setSpinnerX(newXPosition); } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java index 5f27998..c3d72ae 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenSharerFrame.java @@ -19,8 +19,6 @@ package org.apache.openmeetings.screenshare.gui; import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.ROUND_VALUE; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeY; import static org.slf4j.LoggerFactory.getLogger; import java.awt.AWTException; @@ -114,6 +112,7 @@ public class ScreenSharerFrame extends JFrame { private String recordingTipLabel; private String publishingTipLabel; private JCheckBox audioNotify; + private final Core core; private class PublishTextField extends JTextField { private static final long serialVersionUID = 1L; @@ -230,6 +229,7 @@ public class ScreenSharerFrame extends JFrame { * @throws IOException */ public ScreenSharerFrame(final Core core, String[] textLabels) throws AWTException { + this.core = core; setTitle(getTextLabel(textLabels, 0)); //#id 730 setBackground(Color.WHITE); setResizable(false); @@ -274,7 +274,7 @@ public class ScreenSharerFrame extends JFrame { if (sharingStarted) { if (!sharingActionRequested) { sharingActionRequested = true; - core.stopSharing(); + core.sharingStop(); } else { logger.warn("Sharing action is already requested"); } @@ -351,8 +351,8 @@ public class ScreenSharerFrame extends JFrame { panelScreen.setLayout(null); panelScreen.setBackground(Color.WHITE); - int width = ScreenDimensions.width; - int height = ScreenDimensions.height; + int width = getDim().getWidth(); + int height = getDim().getHeight(); //Sliders upSlider.addListener(new ScreenYMouseListener(this)); @@ -387,7 +387,7 @@ public class ScreenSharerFrame extends JFrame { vscreenWidthLabel.setBounds(250, 20, 150, 24); panelScreen.add(vscreenWidthLabel); - spinnerWidth = new NumberSpinner(ScreenDimensions.spinnerWidth, 0, ScreenDimensions.widthMax, 1); + spinnerWidth = new NumberSpinner(getDim().getSpinnerWidth(), 0, getDim().getWidthMax(), 1); spinnerWidth.setBounds(400, 20, 60, 24); spinnerWidth.addChangeListener( new ChangeListener(){ @Override @@ -403,7 +403,7 @@ public class ScreenSharerFrame extends JFrame { labelHeight.setBounds(250, 50, 150, 24); panelScreen.add(labelHeight); - spinnerHeight = new NumberSpinner(ScreenDimensions.spinnerHeight, 0, ScreenDimensions.heightMax, 1); + spinnerHeight = new NumberSpinner(getDim().getSpinnerHeight(), 0, getDim().getHeightMax(), 1); spinnerHeight.setBounds(400, 50, 60, 24); spinnerHeight.addChangeListener( new ChangeListener(){ @Override @@ -419,9 +419,9 @@ public class ScreenSharerFrame extends JFrame { labelX.setBounds(250, 80, 150, 24); panelScreen.add(labelX); - spinnerX = new NumberSpinner(ScreenDimensions.spinnerX, 0, ScreenDimensions.widthMax, 1); + spinnerX = new NumberSpinner(getDim().getSpinnerX(), 0, getDim().getWidthMax(), 1); spinnerX.setBounds(400, 80, 60, 24); - spinnerX.addChangeListener( new ChangeListener(){ + spinnerX.addChangeListener(new ChangeListener(){ @Override public void stateChanged(ChangeEvent arg0) { calcNewValueXSpin(); @@ -435,9 +435,9 @@ public class ScreenSharerFrame extends JFrame { labelY.setBounds(250, 110, 150, 24); panelScreen.add(labelY); - spinnerY = new NumberSpinner(ScreenDimensions.spinnerY, 0, ScreenDimensions.heightMax, 1); + spinnerY = new NumberSpinner(getDim().getSpinnerY(), 0, getDim().getHeightMax(), 1); spinnerY.setBounds(400, 110, 60, 24); - spinnerY.addChangeListener( new ChangeListener(){ + spinnerY.addChangeListener(new ChangeListener(){ @Override public void stateChanged(ChangeEvent arg0) { calcNewValueYSpin(); @@ -461,7 +461,7 @@ public class ScreenSharerFrame extends JFrame { @Override @SuppressWarnings("unchecked") public void actionPerformed(ActionEvent e) { - ScreenDimensions.quality = ((KeyValue<ScreenQuality>)comboQuality.getSelectedItem()).getValue(); + getDim().setQuality(((KeyValue<ScreenQuality>)comboQuality.getSelectedItem()).getValue()); calcRescaleFactors(); } }); @@ -479,7 +479,7 @@ public class ScreenSharerFrame extends JFrame { @Override @SuppressWarnings("unchecked") public void actionPerformed(ActionEvent e) { - ScreenDimensions.FPS = ((KeyValue<Integer>)comboFPS.getSelectedItem()).getValue(); + getDim().setFPS(((KeyValue<Integer>)comboFPS.getSelectedItem()).getValue()); calcRescaleFactors(); } }); @@ -733,18 +733,19 @@ public class ScreenSharerFrame extends JFrame { void calcNewValueXSpin() { if (doUpdateBounds) { int newX = spinnerX.getValue(); - if (ScreenDimensions.spinnerWidth + newX > ScreenDimensions.widthMax) { - newX = ScreenDimensions.widthMax - ScreenDimensions.spinnerWidth; + int val = getDim().getWidthMax() - getDim().getSpinnerWidth(); + if (newX > val) { + newX = val; spinnerX.setValue(newX); if (showWarning) { setStatus(reduceWidthLabel); } } else { - ScreenDimensions.spinnerX = newX; + getDim().setSpinnerX(newX); updateVScreenBounds(); } } else { - ScreenDimensions.spinnerX = spinnerX.getValue(); + getDim().setSpinnerX(spinnerX.getValue()); } calcRescaleFactors(); @@ -753,18 +754,19 @@ public class ScreenSharerFrame extends JFrame { void calcNewValueYSpin() { if (doUpdateBounds) { int newY = spinnerY.getValue(); - if (ScreenDimensions.spinnerHeight + newY > ScreenDimensions.heightMax) { - newY = ScreenDimensions.heightMax - ScreenDimensions.spinnerHeight; + int val = getDim().getHeightMax() - getDim().getSpinnerHeight(); + if (newY > val) { + newY = val; spinnerY.setValue(newY); if (showWarning) { setStatus(reduceHeightLabel); } } else { - ScreenDimensions.spinnerY = newY; + getDim().setSpinnerY(newY); updateVScreenBounds(); } } else { - ScreenDimensions.spinnerY = spinnerY.getValue(); + getDim().setSpinnerY(spinnerY.getValue()); } calcRescaleFactors(); @@ -773,18 +775,19 @@ public class ScreenSharerFrame extends JFrame { void calcNewValueWidthSpin() { if (doUpdateBounds) { int newWidth = spinnerWidth.getValue(); - if (ScreenDimensions.spinnerX + newWidth > ScreenDimensions.widthMax) { - newWidth = ScreenDimensions.widthMax - ScreenDimensions.spinnerX; + int val = getDim().getWidthMax() - getDim().getSpinnerX(); + if (newWidth > val) { + newWidth = val; spinnerWidth.setValue(newWidth); if (showWarning) { setStatus(reduceXLabel); } } else { - ScreenDimensions.spinnerWidth = newWidth; + getDim().setSpinnerWidth(newWidth); updateVScreenBounds(); } } else { - ScreenDimensions.spinnerWidth = spinnerWidth.getValue(); + getDim().setSpinnerWidth(spinnerWidth.getValue()); } calcRescaleFactors(); @@ -793,18 +796,19 @@ public class ScreenSharerFrame extends JFrame { void calcNewValueHeightSpin() { if (doUpdateBounds) { int newHeight = spinnerHeight.getValue(); - if (ScreenDimensions.spinnerY + newHeight > ScreenDimensions.heightMax) { - newHeight = ScreenDimensions.heightMax - ScreenDimensions.spinnerY; + int val = getDim().getHeightMax() - getDim().getSpinnerY(); + if (newHeight > val) { + newHeight = val; spinnerHeight.setValue(newHeight); if (showWarning) { setStatus(reduceYLabel); } } else { - ScreenDimensions.spinnerHeight = newHeight; + getDim().setSpinnerHeight(newHeight); updateVScreenBounds(); } } else { - ScreenDimensions.spinnerHeight = spinnerHeight.getValue(); + getDim().setSpinnerHeight(spinnerHeight.getValue()); } calcRescaleFactors(); @@ -815,20 +819,20 @@ public class ScreenSharerFrame extends JFrame { */ void calcRescaleFactors() { logger.trace("calcRescaleFactors -- "); - resizeX = spinnerWidth.getValue(); - resizeY = spinnerHeight.getValue(); - switch (ScreenDimensions.quality) { + int resizeX = spinnerWidth.getValue(); + int resizeY = spinnerHeight.getValue(); + switch (getDim().getQuality()) { case Low: - resizeX = (int)(2.0 * ScreenDimensions.resizeX / 8); - resizeY = (int)(2.0 * ScreenDimensions.resizeY / 8); + resizeX = (int)(2.0 * resizeX / 8); + resizeY = (int)(2.0 * resizeY / 8); break; case Medium: - resizeX = (int)(4.0 * ScreenDimensions.resizeX / 8); - resizeY = (int)(4.0 * ScreenDimensions.resizeY / 8); + resizeX = (int)(4.0 * resizeX / 8); + resizeY = (int)(4.0 * resizeY / 8); break; case High: - resizeX = (int)(6.0 * ScreenDimensions.resizeX / 8); - resizeY = (int)(6.0 * ScreenDimensions.resizeY / 8); + resizeX = (int)(6.0 * resizeX / 8); + resizeY = (int)(6.0 * resizeY / 8); break; case VeryHigh: default: @@ -838,7 +842,9 @@ public class ScreenSharerFrame extends JFrame { int dY = resizeY % ROUND_VALUE; resizeX += dX == 0 ? 0 : ROUND_VALUE - dX; resizeY += dY == 0 ? 0 : ROUND_VALUE - dY; - logger.trace("resize: X:" + resizeX + " Y: " + resizeY); + logger.trace("resize: X: {} Y: {}", resizeX, resizeY); + getDim().setResizeX(resizeX); + getDim().setResizeY(resizeY); updateVScreenBounds(); } @@ -848,7 +854,7 @@ public class ScreenSharerFrame extends JFrame { upSlider.setBounds(x + vScreenX + (width / 2) - 8, y + vScreenY - 16, 16, 32); downSlider.setBounds(x + vScreenX + (width / 2) - 8, y + vScreenY - 16 + height, 16, 32); - virtualScreen.setText(ScreenDimensions.spinnerWidth + ":" + ScreenDimensions.spinnerHeight); + virtualScreen.setText(String.format("%s:%s", getDim().getSpinnerWidth(), getDim().getSpinnerHeight())); virtualScreen.setBounds(x + vScreenX, y + vScreenY, width, height); } @@ -858,13 +864,17 @@ public class ScreenSharerFrame extends JFrame { * */ void updateVScreenBounds() { - double ratio = ((double)ScreenDimensions.width) / ScreenDimensions.widthMax; - int newWidth = (int)(ScreenDimensions.spinnerWidth * ratio); - int newX = (int)(ScreenDimensions.spinnerX * ratio); + double ratio = ((double)getDim().getWidth()) / getDim().getWidthMax(); + int newWidth = (int)(getDim().getSpinnerWidth() * ratio); + int newX = (int)(getDim().getSpinnerX() * ratio); - int newHeight = (int)(ScreenDimensions.spinnerHeight * ratio); - int newY = (int)(ScreenDimensions.spinnerY * ratio); + int newHeight = (int)(getDim().getSpinnerHeight() * ratio); + int newY = (int)(getDim().getSpinnerY() * ratio); setVScreenBounds(newX, newY, newWidth, newHeight); } + + public ScreenDimensions getDim() { + return core.getDim(); + } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenWidthMouseListener.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenWidthMouseListener.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenWidthMouseListener.java index 27862fa..404887c 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenWidthMouseListener.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenWidthMouseListener.java @@ -25,7 +25,7 @@ import java.awt.event.MouseEvent; import javax.swing.event.MouseInputAdapter; public class ScreenWidthMouseListener extends MouseInputAdapter { - private ScreenSharerFrame frame; + private final ScreenSharerFrame frame; private double x = 0; public ScreenWidthMouseListener(ScreenSharerFrame frame) { @@ -60,10 +60,10 @@ public class ScreenWidthMouseListener extends MouseInputAdapter { } double newX = e.getX(); - int newWidth = ScreenDimensions.spinnerWidth - (int)(x - newX); - int newSpinnerX = ScreenDimensions.spinnerX + newWidth; + int newWidth = frame.getDim().getSpinnerWidth() - (int)(x - newX); + int newSpinnerX = frame.getDim().getSpinnerX() + newWidth; - if (0 <= newSpinnerX && newSpinnerX <= ScreenDimensions.widthMax) { + if (0 <= newSpinnerX && newSpinnerX <= frame.getDim().getWidthMax()) { frame.setDoUpdateBounds(false); frame.setSpinnerWidth(newWidth); frame.setDoUpdateBounds(true); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenXMouseListener.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenXMouseListener.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenXMouseListener.java index 0e615f7..66106d2 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenXMouseListener.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenXMouseListener.java @@ -25,7 +25,7 @@ import java.awt.event.MouseEvent; import javax.swing.event.MouseInputAdapter; public class ScreenXMouseListener extends MouseInputAdapter { - private ScreenSharerFrame frame; + private final ScreenSharerFrame frame; private double x = 0; public ScreenXMouseListener(ScreenSharerFrame frame) { @@ -60,8 +60,8 @@ public class ScreenXMouseListener extends MouseInputAdapter { } double newX = e.getX(); int delta = (int) (x - newX); - int newXPosition = ScreenDimensions.spinnerX - delta; - int newWidth = ScreenDimensions.spinnerWidth + delta; + int newXPosition = frame.getDim().getSpinnerX() - delta; + int newWidth = frame.getDim().getSpinnerWidth() + delta; if (newXPosition >= 0 && newWidth >= 0) { frame.setDoUpdateBounds(false); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenYMouseListener.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenYMouseListener.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenYMouseListener.java index 75ead4d..d1faf4b 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenYMouseListener.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/gui/ScreenYMouseListener.java @@ -25,7 +25,7 @@ import java.awt.event.MouseEvent; import javax.swing.event.MouseInputAdapter; public class ScreenYMouseListener extends MouseInputAdapter { - private ScreenSharerFrame frame; + private final ScreenSharerFrame frame; private double y = 0; public ScreenYMouseListener(ScreenSharerFrame frame) { @@ -61,8 +61,8 @@ public class ScreenYMouseListener extends MouseInputAdapter { double newY = e.getY(); int delta = (int) (y - newY); - int newYPosition = ScreenDimensions.spinnerY - delta; - int newHeight = ScreenDimensions.spinnerHeight + delta; + int newYPosition = frame.getDim().getSpinnerY() - delta; + int newHeight = frame.getDim().getSpinnerHeight() + delta; if (newYPosition >= 0 && newHeight >= 0) { frame.setDoUpdateBounds(false); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/EncodeJob.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/EncodeJob.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/EncodeJob.java index f211457..84c44ff 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/EncodeJob.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/EncodeJob.java @@ -18,10 +18,6 @@ */ package org.apache.openmeetings.screenshare.job; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerHeight; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerWidth; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerY; import static org.slf4j.LoggerFactory.getLogger; import java.awt.AWTException; @@ -30,6 +26,7 @@ import java.awt.Robot; import org.apache.openmeetings.screenshare.CaptureScreen; import org.apache.openmeetings.screenshare.ScreenV1Encoder; +import org.apache.openmeetings.screenshare.gui.ScreenDimensions; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobDataMap; @@ -42,9 +39,10 @@ import org.slf4j.Logger; public class EncodeJob implements Job { private static final Logger log = getLogger(EncodeJob.class); public static final String CAPTURE_KEY = "capture"; - Robot robot; - Rectangle screen = new Rectangle(spinnerX, spinnerY, spinnerWidth, spinnerHeight); - int[][] image = null; + private Robot robot; + private ScreenDimensions dim; + private Rectangle screen = null; + private int[][] image = null; public EncodeJob() { try { @@ -58,12 +56,17 @@ public class EncodeJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap data = context.getJobDetail().getJobDataMap(); CaptureScreen capture = (CaptureScreen)data.get(CAPTURE_KEY); + if (screen == null) { + dim = capture.getDim(); + screen = new Rectangle(dim.getSpinnerX(), dim.getSpinnerY() + , dim.getSpinnerWidth(), dim.getSpinnerHeight()); + } long start = 0; if (log.isTraceEnabled()) { start = System.currentTimeMillis(); } - image = ScreenV1Encoder.getImage(screen, robot); + image = ScreenV1Encoder.getImage(dim, screen, robot); if (log.isTraceEnabled()) { log.trace(String.format("encode: Image was captured in %s ms, size %sk", System.currentTimeMillis() - start, 4 * image.length * image[0].length / 1024)); start = System.currentTimeMillis(); http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java ---------------------------------------------------------------------- diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java index 39f1357..122fffd 100644 --- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java +++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/job/RemoteJob.java @@ -20,13 +20,6 @@ package org.apache.openmeetings.screenshare.job; import static java.awt.Toolkit.getDefaultToolkit; import static java.awt.datatransfer.DataFlavor.stringFlavor; -import static org.apache.openmeetings.screenshare.Core.Ampl_factor; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.resizeY; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerHeight; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerWidth; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerX; -import static org.apache.openmeetings.screenshare.gui.ScreenDimensions.spinnerY; import static org.apache.openmeetings.screenshare.util.Util.getFloat; import static org.slf4j.LoggerFactory.getLogger; @@ -45,6 +38,7 @@ import java.util.concurrent.TimeUnit; import org.apache.commons.lang3.SystemUtils; import org.apache.openmeetings.screenshare.Core; +import org.apache.openmeetings.screenshare.gui.ScreenDimensions; import org.quartz.DisallowConcurrentExecution; import org.quartz.Job; import org.quartz.JobDataMap; @@ -57,6 +51,7 @@ public class RemoteJob implements Job { private static final Logger log = getLogger(RemoteJob.class); public static final String CORE_KEY = "core"; private Robot robot = null; + private ScreenDimensions dim = null; public RemoteJob() { try { @@ -71,6 +66,9 @@ public class RemoteJob implements Job { public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap data = context.getJobDetail().getJobDataMap(); Core core = (Core)data.get(CORE_KEY); + if (dim == null) { + dim = core.getDim(); + } try { Map<String, Object> obj; while ((obj = core.getRemoteEvents().poll(1, TimeUnit.MILLISECONDS)) != null) { @@ -189,12 +187,12 @@ public class RemoteJob implements Job { } } - private static Point getCoordinates(Map<String, Object> obj) { - float scaleFactorX = spinnerWidth / (Ampl_factor * resizeX); - float scaleFactorY = spinnerHeight / (Ampl_factor * resizeY); + private Point getCoordinates(Map<String, Object> obj) { + float scaleFactorX = dim.getSpinnerWidth() / dim.getResizeX(); + float scaleFactorY = dim.getSpinnerHeight() / dim.getResizeY(); - int x = Math.round(scaleFactorX * getFloat(obj, "x") + spinnerX); - int y = Math.round(scaleFactorY * getFloat(obj, "y") + spinnerY); + int x = Math.round(scaleFactorX * getFloat(obj, "x") + dim.getSpinnerX()); + int y = Math.round(scaleFactorY * getFloat(obj, "y") + dim.getSpinnerY()); return new Point(x, y); } } http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java ---------------------------------------------------------------------- diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java index dc0556f..4d18b34 100644 --- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java @@ -105,9 +105,8 @@ public class OpenmeetingsVariables { public static final String FLASH_QUALITY = "quality"; public static final String FLASH_ECHO_PATH = "echoPath"; public static final String FLASH_MIC_RATE = "micRate"; - - public static int DEFAULT_MINUTES_REMINDER_SEND = 15; - public static String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/"; + public static final int DEFAULT_MINUTES_REMINDER_SEND = 15; + public static final String DEFAULT_BASE_URL = "http://localhost:5080/openmeetings/"; public static String webAppRootKey = null; public static String webAppRootPath = null; http://git-wip-us.apache.org/repos/asf/openmeetings/blob/381838de/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java ---------------------------------------------------------------------- diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java index 472934c..42fb8ea 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java @@ -688,7 +688,8 @@ public class Application extends AuthenticatedWebApplication implements IApplica Set<String> clients = get().getRooms().get(roomId); if (clients != null) { for (String uid : clients) { - if (getOnlineClient(uid).getUserId().equals(userId)) { + Client c = getOnlineClient(uid); + if (c != null && c.getUserId().equals(userId)) { return true; } }
