Fix update

This commit is contained in:
huangyuhui
2018-03-04 19:09:11 +08:00
parent 5656c9f351
commit 9ba6cddde7
5 changed files with 23 additions and 20 deletions

View File

@@ -18,7 +18,7 @@ if (buildnumber == null)
def versionroot = System.getenv("VERSION_ROOT")
if (versionroot == null)
versionroot = "3.0"
versionroot = "3.1"
String mavenVersion = versionroot + '.' + buildnumber
version = mavenVersion

View File

@@ -49,6 +49,14 @@ public final class Launcher extends Application {
Controllers.initialize(primaryStage);
primaryStage.setResizable(false);
primaryStage.setScene(Controllers.getScene());
UPDATE_CHECKER.process(false)
.then(Task.of(Schedulers.javafx(), () -> {
if (UPDATE_CHECKER.isOutOfDate())
Controllers.showUpdate();
}))
.start();
primaryStage.show();
} catch (Throwable e) {
CRASH_REPORTER.uncaughtException(Thread.currentThread(), e);
@@ -65,13 +73,6 @@ public final class Launcher extends Application {
Logging.LOG.info("*** " + TITLE + " ***");
UPDATE_CHECKER.process(false)
.then(Task.of(Schedulers.javafx(), () -> {
if (UPDATE_CHECKER.isOutOfDate())
Controllers.showUpdate();
}))
.start();
launch(args);
} catch (Throwable e) { // Fucking JavaFX will suppress the exception and will break our crash reporter.
CRASH_REPORTER.uncaughtException(Thread.currentThread(), e);

View File

@@ -17,6 +17,7 @@
*/
package org.jackhuang.hmcl.ui;
import com.jfoenix.concurrency.JFXUtilities;
import com.jfoenix.controls.JFXDialog;
import javafx.scene.Node;
import javafx.scene.Scene;

View File

@@ -43,11 +43,14 @@ public final class IntVersionNumber extends VersionNumber {
if (!(o instanceof IntVersionNumber))
return 0;
IntVersionNumber other = (IntVersionNumber) o;
int len = Math.min(this.version.size(), other.version.size());
for (int i = 0; i < len; ++i)
if (!version.get(i).equals(other.version.get(i)))
return version.get(i).compareTo(other.version.get(i));
return Integer.compare(this.version.size(), other.version.size());
int len = Math.max(this.version.size(), other.version.size());
for (int i = 0; i < len; ++i) {
int thisInt = Lang.get(this.version, i).orElse(0);
int otherInt = Lang.get(other.version, i).orElse(0);
if (thisInt != otherInt)
return Integer.compare(thisInt, otherInt);
}
return 0;
}
@Override

View File

@@ -40,13 +40,11 @@ public abstract class VersionNumber implements Comparable<VersionNumber> {
throw new IllegalArgumentException("The version " + version + " is malformed, only dots and digits are allowed.");
String[] s = version.split("\\.");
int last = s.length - 1;
for (int i = s.length - 1; i >= 0; --i)
if (Integer.parseInt(s[i]) == 0)
last = i;
ArrayList<Integer> versions = new ArrayList<>(last + 1);
for (int i = 0; i <= last; ++i)
versions.add(Integer.parseInt(s[i]));
ArrayList<Integer> versions = new ArrayList<>(s.length);
for (String value : s) versions.add(Integer.parseInt(value));
while (!versions.isEmpty() && versions.get(versions.size() - 1) == 0)
versions.remove(versions.size() - 1);
return new IntVersionNumber(Collections.unmodifiableList(versions));
}