Open menu naturally via chapter events; M returns to menu; debounce M
The menu state machine advances from the menu-intro state to the menu state only when the menu video crosses its chapter-2 marker (onChapter). Fire onChapter from the video loop as PTS crosses playlist markers. Also route the M key through the onMenu dispatcher so it returns to the menu video/title (not just drawing menu items), and debounce the key against auto-repeat.
This commit is contained in:
@@ -69,8 +69,8 @@ public final class PlayerApp extends Application {
|
||||
private volatile boolean skipRequested = false;
|
||||
|
||||
private volatile VsmxInterpreter menuInterpreter;
|
||||
private volatile VsmxBaseObject mmActivate;
|
||||
private volatile VsmxNativeObject controllerObject;
|
||||
private long lastMenuKeyNanos = 0;
|
||||
|
||||
@Override
|
||||
public void start(Stage stage) {
|
||||
@@ -147,12 +147,18 @@ public final class PlayerApp extends Application {
|
||||
}
|
||||
|
||||
private void openMenuDirectly() {
|
||||
// Debounce key auto-repeat.
|
||||
long now = System.nanoTime();
|
||||
if (now - lastMenuKeyNanos < 250_000_000L) {
|
||||
return;
|
||||
}
|
||||
lastMenuKeyNanos = now;
|
||||
|
||||
VsmxInterpreter interpreter = menuInterpreter;
|
||||
VsmxNativeObject c = controllerObject;
|
||||
if (interpreter != null && c != null) {
|
||||
VsmxBaseObject callback = c.getPropertyValue("onMenu");
|
||||
if (callback instanceof VsmxFunction function) {
|
||||
System.err.println("[debug] returning to menu");
|
||||
interpreter.interpretFunction(function, null, new VsmxBaseObject[0]);
|
||||
}
|
||||
}
|
||||
@@ -212,7 +218,6 @@ public final class PlayerApp extends Application {
|
||||
controller = (Controller) controllerObject.getObject();
|
||||
moviePlayer = (MoviePlayer) movieplayer.getObject();
|
||||
menuInterpreter = interpreter;
|
||||
mmActivate = globals.getPropertyValue("mm_activate");
|
||||
this.controllerObject = controllerObject;
|
||||
controller.callCallback(interpreter, "onAutoPlay", null);
|
||||
} catch (Exception e) {
|
||||
|
||||
Reference in New Issue
Block a user