Skip to content

Commit

Permalink
Better error handling in places.
Browse files Browse the repository at this point in the history
  * If openrazer is not installed at all
  * If a device is missing an image or the image cannot otherwise be found
  * Cleaner console output
  • Loading branch information
brett-smith committed Feb 7, 2021
1 parent 278c29a commit 3aca278
Show file tree
Hide file tree
Showing 28 changed files with 144 additions and 53 deletions.
4 changes: 2 additions & 2 deletions buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:53 GMT 2021
buildNumber=137
#Sun Feb 07 22:19:12 GMT 2021
buildNumber=145
4 changes: 2 additions & 2 deletions snake-app-linux/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:59 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:18 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-backend-openrazer/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:57 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:16 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-dist/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:13:01 GMT 2021
buildNumber=122
#Sun Feb 07 22:19:20 GMT 2021
buildNumber=130
2 changes: 2 additions & 0 deletions snake-dist/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@
<forkerArg>install-location ${installer.home}/snake-razer</forkerArg>
<forkerArg>jvmarg --add-modules</forkerArg>
<forkerArg>jvmarg themes.awhitelight,themes.agreenfuture,themes.aredsky,themes.abluelife,themes.ayellowdwarf,themes.anorangetwist,themes.apinkburst,themes.apurplehaze</forkerArg>
<forkerArg>jvmarg -Djfreedesktop.quiet=true</forkerArg>
</forkerArgs>
<bootstrapFiles>
<bootstrapFile>
Expand Down Expand Up @@ -178,6 +179,7 @@
<forkerArg>install-location ${installer.home}/snake-razer</forkerArg>
<forkerArg>jvmarg --add-modules</forkerArg>
<forkerArg>jvmarg themes.awhitelight,themes.agreenfuture,themes.aredsky,themes.abluelife,themes.ayellowdwarf,themes.anorangetwist,themes.apinkburst,themes.apurplehaze</forkerArg>
<forkerArg>jvmarg -Djfreedesktop.quiet=true</forkerArg>
</forkerArgs>
<bootstrapFiles>
<bootstrapFile>
Expand Down
4 changes: 2 additions & 2 deletions snake-lib/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:55 GMT 2021
buildNumber=136
#Sun Feb 07 22:19:14 GMT 2021
buildNumber=144
4 changes: 2 additions & 2 deletions snake-themes/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:57 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:16 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-abluelife/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:58 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-agreenfuture/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:58 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-anorangetwist/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:58 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-apinkburst/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:58 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-apurplehaze/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:59 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-aredsky/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:58 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-awhitelight/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:57 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:16 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-themes/snake-theme-ayellowdwarf/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:58 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:17 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-ui-linux/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:57 GMT 2021
buildNumber=123
#Sun Feb 07 22:19:16 GMT 2021
buildNumber=131
4 changes: 2 additions & 2 deletions snake-ui/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:57 GMT 2021
buildNumber=124
#Sun Feb 07 22:19:16 GMT 2021
buildNumber=132
11 changes: 6 additions & 5 deletions snake-ui/src/main/java/uk/co/bithatch/snake/ui/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -467,11 +467,6 @@ else if (evt.getKey().equals(Configuration.PREF_TRANSPARENCY)) {
PlatformService.get().setStartOnLogin(true);
PREFS.putBoolean("installed", true);
}

addOnManager.start();
effectManager.open();

new DesktopNotifications(this);
}

private void clearControllers() {
Expand Down Expand Up @@ -525,6 +520,11 @@ private void createMainScene() throws IOException {
try {
if (!backendInited) {
initBackend();

addOnManager.start();
effectManager.open();

new DesktopNotifications(this);
}

if (!macroManager.isStarted())
Expand All @@ -535,6 +535,7 @@ private void createMainScene() throws IOException {
} else {
push(Overview.class, Direction.FADE);
}

} catch (Exception e) {
LOG.log(Level.ERROR, "Failed to initialize.", e);
Error fc = openScene(Error.class, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,17 @@ protected void onConfigure() throws Exception {
gain.setValue(cfg.getAudioGain());
gain.valueProperty().addListener((e, o, n) -> cfg.setAudioGain(n.floatValue()));

checkAudioState(context, this);

}

public static void checkAudioState(App context, AbstractController controller) {
if (context.getAudioManager().getError() != null) {
notifyMessage(MessagePersistence.EVERYTIME, MessageType.DANGER, null,
controller.notifyMessage(MessagePersistence.EVERYTIME, MessageType.DANGER, null,
MessageFormat.format(bundle.getString("error.noAudioSystem"),
context.getAudioManager().getError().getLocalizedMessage()),
60);
}

}

@Override
Expand Down
5 changes: 4 additions & 1 deletion snake-ui/src/main/java/uk/co/bithatch/snake/ui/Cache.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,10 @@ public String getCachedImage(String image) {
resolved.put(image, cacheFile.toURI().toURL().toExternalForm());
}
} catch (IOException ioe) {
LOG.log(Level.ERROR, "Failed to cache image.", ioe);
if(LOG.isLoggable(Level.DEBUG))
LOG.log(Level.ERROR, "Failed to cache image.", ioe);
else
LOG.log(Level.ERROR, "Failed to cache image. " + ioe.getMessage());
resolved.put(image, image);
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -383,7 +383,7 @@ public void start() {
try {
startDeviceEffects(effect);
} catch (Exception e) {
LOG.log(Level.ERROR, "Failed to start script.", e);
LOG.log(Level.ERROR, "Failed to start custom effects.", e);
}
}
context.getBackend().addListener(this);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public String toString() {
private ScheduledFuture<?> grabTask;
private Configuration cfg;
private ScheduledExecutorService queue;
private Exception error;
private Throwable error;

public AudioManager(App context) {
this.context = context;
Expand Down Expand Up @@ -164,7 +164,7 @@ public List<AudioSink> getSinks() {
return backend == null ? Collections.emptyList() : backend.getSinks();
}

public Exception getError() {
public Throwable getError() {
return error;
}

Expand Down Expand Up @@ -285,7 +285,64 @@ public void preferenceChange(PreferenceChangeEvent evt) {
}

protected AudioBackend createBackend() {
return new JImpulseAudioBackend(this);
try {
return new JImpulseAudioBackend(this);
} catch (UnsatisfiedLinkError | Exception e) {
error = e;
if (LOG.isLoggable(Level.DEBUG))
LOG.log(Level.ERROR, "Failed to setup audio backend. Do you have libfftw-3 installed?", e);
else
LOG.log(Level.ERROR,
"Failed to setup audio backend. Do you have libfftw-3 installed? " + e.getLocalizedMessage());
return new AudioBackend() {

@Override
public void setSourceIndex(int index) {
}

@Override
public void init() {
}

@Override
public void stop() {
}

@Override
public double[] getSnapshot(boolean audioFFT) {
return null;
}

@Override
public List<AudioSource> getSources() {
return Collections.emptyList();
}

@Override
public List<AudioSink> getSinks() {
return Collections.emptyList();
}

@Override
public int getVolume(AudioSink sink) {
return 0;
}

@Override
public void setVolume(AudioSink sink, int volume) {
}

@Override
public boolean isMuted(AudioSink sink) {
return false;
}

@Override
public void setMuted(AudioSink sink, boolean muted) {
}

};
}
}

@SuppressWarnings("resource")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,12 @@ public void add(Device device, EffectHandler<?, ?> handler) {

public void open() {
context.getBackend().addListener(this);
context.getBackend().setSync(context.getPreferences().getBoolean(PREF_SYNC, false));
try {
context.getBackend().setSync(context.getPreferences().getBoolean(PREF_SYNC, false));
}
catch(Exception e) {
LOG.log(Level.ERROR, "Failed to set sync state.", e);
}
}

public void addListener(Listener listener) {
Expand Down
23 changes: 21 additions & 2 deletions snake-ui/src/main/java/uk/co/bithatch/snake/ui/tray/Tray.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package uk.co.bithatch.snake.ui.tray;


import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
Expand All @@ -17,6 +18,7 @@
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.lang.System.Logger.Level;
import java.net.URL;
import java.text.MessageFormat;
import java.util.ArrayList;
Expand All @@ -39,6 +41,7 @@
import dorkbox.systemTray.MenuItem;
import dorkbox.systemTray.Separator;
import dorkbox.systemTray.SystemTray;
import dorkbox.systemTray.util.SystemTrayFixes;
import javafx.application.Platform;
import uk.co.bithatch.macrolib.MacroSystem.RecordingListener;
import uk.co.bithatch.macrolib.RecordingSession;
Expand Down Expand Up @@ -66,6 +69,8 @@

public class Tray implements AutoCloseable, BackendListener, Listener, PreferenceChangeListener, RecordingListener {

final static System.Logger LOG = System.getLogger(Tray.class.getName());

final static ResourceBundle bundle = ResourceBundle.getBundle(Tray.class.getName());

private Configuration cfg;
Expand Down Expand Up @@ -107,6 +112,7 @@ public void close() throws Exception {

Menu addDevice(Device device, Menu toMenu) throws IOException {
var img = context.getDefaultImage(device.getType(), context.getCache().getCachedImage(device.getImage()));
Menu menu = null;
if (img.startsWith("http:") || img.startsWith("https:")) {
var url = new URL(img);
var path = url.getPath();
Expand All @@ -119,13 +125,26 @@ Menu addDevice(Device device, Menu toMenu) throws IOException {
try (var fos = new FileOutputStream(tf)) {
try (InputStream is = url.openStream()) {
is.transferTo(fos);
img = tf.getAbsolutePath();
}
} catch(IOException ioe) {
try(InputStream in = SystemTrayFixes.class.getResource("error_32.png").openStream()) {
menu = new Menu(device.getName(), in);
}
if(LOG.isLoggable(Level.DEBUG))
LOG.log(Level.WARNING, "Failed to load device image.", ioe);
else
LOG.log(Level.WARNING, "Failed to load device image. " + ioe.getMessage() );
}
img = tf.getAbsolutePath();
} else if (img.startsWith("file:")) {
img = img.substring(5);
}
var menu = toMenu == null ? new Menu(device.getName(), img) : toMenu;
if(toMenu == null) {
if(menu == null)
menu = new Menu(device.getName(), img);
}
else
menu = toMenu;

/* Open */
var openDev = new MenuItem(bundle.getString("open"), (e) -> Platform.runLater(() -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ audioEffectMode.ExpandAudioEffectMode=Growy
audioEffectMode.BlobbyAudioEffectMode=Blobby
audioEffectMode.BurstyAudioEffectMode=Bursty
audioEffectMode.LineyAudioEffectMode=Liney
error.noAudioSystem=No audio system is available. {0}.
error.noAudioSystem=No audio system is available. {0}. Do you have libpulse and libfftw-3 installed?
4 changes: 2 additions & 2 deletions snake-updater/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:13:01 GMT 2021
buildNumber=122
#Sun Feb 07 22:19:20 GMT 2021
buildNumber=130
4 changes: 2 additions & 2 deletions snake-widgets/buildNumber.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#maven.buildNumber.plugin properties file
#Thu Feb 04 01:12:54 GMT 2021
buildNumber=150
#Sun Feb 07 22:19:13 GMT 2021
buildNumber=158
2 changes: 1 addition & 1 deletion target/CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 1.0.0-SNAPSHOT-137
# 1.0.0-SNAPSHOT-145

* Audio lighting effects. Requires `libpulse` and `libfftw-3` to be installed.

Expand Down

0 comments on commit 3aca278

Please sign in to comment.