Vendored BD-J SDK, tsMuxeR + local VLC plugins, ffmpeg asset generation, and a signed BD-J Xlet menu (org.homebrew.MyXlet) authored into a UDF 2.50 ISO. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
64 lines
1.5 KiB
Java
64 lines
1.5 KiB
Java
package org.homebrew;
|
|
|
|
import java.awt.BorderLayout;
|
|
import javax.tv.xlet.Xlet;
|
|
import javax.tv.xlet.XletContext;
|
|
import javax.tv.xlet.XletStateChangeException;
|
|
import org.havi.ui.HScene;
|
|
import org.havi.ui.HSceneFactory;
|
|
|
|
public class MyXlet extends Thread implements Xlet {
|
|
private HScene scene;
|
|
private AdjustmentsMenu menu;
|
|
private boolean running;
|
|
|
|
public void initXlet(XletContext context) throws XletStateChangeException {
|
|
menu = new AdjustmentsMenu();
|
|
menu.setSize(1280, 720);
|
|
|
|
scene = HSceneFactory.getInstance().getDefaultHScene();
|
|
scene.add(menu, BorderLayout.CENTER);
|
|
scene.addKeyListener(menu);
|
|
scene.validate();
|
|
scene.repaint();
|
|
}
|
|
|
|
public void startXlet() throws XletStateChangeException {
|
|
running = true;
|
|
menu.setVisible(true);
|
|
scene.setVisible(true);
|
|
menu.requestFocus();
|
|
scene.requestFocus();
|
|
start();
|
|
}
|
|
|
|
public void pauseXlet() {
|
|
if (menu != null) {
|
|
menu.setVisible(false);
|
|
}
|
|
}
|
|
|
|
public void destroyXlet(boolean unconditional) {
|
|
running = false;
|
|
interrupt();
|
|
|
|
if (scene != null && menu != null) {
|
|
menu.setVisible(false);
|
|
scene.remove(menu);
|
|
}
|
|
|
|
scene = null;
|
|
menu = null;
|
|
}
|
|
|
|
public void run() {
|
|
while (running) {
|
|
try {
|
|
Thread.sleep(1000);
|
|
} catch (InterruptedException e) {
|
|
running = false;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|