diff --git a/src/main/java/greek/horse/server/ui/controllers/WebcamController.java b/src/main/java/greek/horse/server/ui/controllers/WebcamController.java index 6606904..e5bd115 100644 --- a/src/main/java/greek/horse/server/ui/controllers/WebcamController.java +++ b/src/main/java/greek/horse/server/ui/controllers/WebcamController.java @@ -20,12 +20,12 @@ public class WebcamController { public void configureChoiceBox() { choiceBox.getSelectionModel().selectFirst(); - choiceBox.getSelectionModel().selectedIndexProperty() - .addListener((observableValue, oldIndex, newIndex) -> { - if (oldIndex.intValue() != newIndex.intValue()) { - task.refreshSettings(newIndex.intValue()); - } - }); +// choiceBox.getSelectionModel().selectedIndexProperty() +// .addListener((observableValue, oldIndex, newIndex) -> { +// if (oldIndex.intValue() != newIndex.intValue()) { +// task.refreshSettings(newIndex.intValue()); +// } +// }); } public void setImage(BufferedImage screenCapture) { diff --git a/src/main/java/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.java b/src/main/java/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.java index 7492b84..43a5dce 100644 --- a/src/main/java/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.java +++ b/src/main/java/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.java @@ -79,8 +79,6 @@ public class MonitorDesktopTask implements Runnable { } }); - loadMonitors(); - while (!start.get()) { try { Thread.sleep(100); @@ -89,6 +87,8 @@ public class MonitorDesktopTask implements Runnable { } } + loadMonitors(); + startListening(); while (this.running.get() && this.plebe.getRunning().get()) { @@ -129,13 +129,7 @@ public class MonitorDesktopTask implements Runnable { } }); - } - - private void startListening() { - double w = stage.getWidth() - 50; - double h = stage.getHeight() - 70; - - while(controller.choiceBox.getItems().isEmpty()){ + while (controller.choiceBox.getSelectionModel().getSelectedItem() == null){ try { Thread.sleep(20); } catch (InterruptedException e) { @@ -143,6 +137,12 @@ public class MonitorDesktopTask implements Runnable { } } + } + + private void startListening() { + double w = stage.getWidth() - 50; + double h = stage.getHeight() - 70; + request = plebe.startDesktop(new MonitorDesktopWrapper(w, h, controller.isCompressed(), 0)); ObservableList observableList = request.getObservableReceivedObjs(); @@ -191,9 +191,13 @@ public class MonitorDesktopTask implements Runnable { } public void refreshSettings() { + int index = controller.choiceBox.getSelectionModel().getSelectedIndex(); + if (index<0){ + return; + } double w = stage.getWidth() - 50; double h = stage.getHeight() - 70; - this.plebe.refreshDesktop(new MonitorDesktopWrapper(w, h, controller.isCompressed(), controller.choiceBox.getSelectionModel().getSelectedIndex())); + this.plebe.refreshDesktop(new MonitorDesktopWrapper(w, h, controller.isCompressed(), index)); } public AtomicBoolean getRunning() { diff --git a/src/main/java/greek/horse/server/ui/controllers/tasks/WebcamTask.java b/src/main/java/greek/horse/server/ui/controllers/tasks/WebcamTask.java index 2955d60..37d9c6a 100644 --- a/src/main/java/greek/horse/server/ui/controllers/tasks/WebcamTask.java +++ b/src/main/java/greek/horse/server/ui/controllers/tasks/WebcamTask.java @@ -80,8 +80,6 @@ public class WebcamTask implements Runnable { } }); - loadWebcams(); - while (!start.get()) { try { Thread.sleep(100); @@ -90,6 +88,8 @@ public class WebcamTask implements Runnable { } } + loadWebcams(); + startListening(); while (this.running.get() && this.plebe.getRunning().get()) { @@ -116,14 +116,6 @@ public class WebcamTask implements Runnable { double w = stage.getWidth() - 50; double h = stage.getHeight() - 70; - while(controller.choiceBox.getItems().isEmpty()){ - try { - Thread.sleep(20); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - request = plebe.startWebcam(new WebcamInfoWrapper(w, h, controller.choiceBox.getSelectionModel().getSelectedItem())); ObservableList observableList = request.getObservableReceivedObjs(); @@ -171,11 +163,20 @@ public class WebcamTask implements Runnable { } catch (Exception e) { log.error("Failed to get webcams", e); this.running.set(false); - } finally { + } + finally { controller.configureChoiceBox(); } }); + while (controller.choiceBox.getSelectionModel().getSelectedItem() == null){ + try { + Thread.sleep(20); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + } public void refreshSettings() { @@ -183,6 +184,9 @@ public class WebcamTask implements Runnable { } public void refreshSettings(int index) { + if (index<0){ + return; + } double w = stage.getWidth() - 50; double h = stage.getHeight() - 70; this.plebe.refreshWebcam(new WebcamInfoWrapper(w, h, controller.choiceBox.getItems().get(index))); diff --git a/target/classes/greek/horse/server/ui/controllers/WebcamController.class b/target/classes/greek/horse/server/ui/controllers/WebcamController.class index aea3691..b1679ad 100644 Binary files a/target/classes/greek/horse/server/ui/controllers/WebcamController.class and b/target/classes/greek/horse/server/ui/controllers/WebcamController.class differ diff --git a/target/classes/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.class b/target/classes/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.class index 3b4fcc6..3eb9f70 100644 Binary files a/target/classes/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.class and b/target/classes/greek/horse/server/ui/controllers/tasks/MonitorDesktopTask.class differ diff --git a/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask$1.class b/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask$1.class index 70a432e..2306d8d 100644 Binary files a/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask$1.class and b/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask$1.class differ diff --git a/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask.class b/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask.class index a226d81..940b207 100644 Binary files a/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask.class and b/target/classes/greek/horse/server/ui/controllers/tasks/WebcamTask.class differ