From 580d48d7d0032a3ee2839385ef30d61ed66e2788 Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Tue, 11 Aug 2020 19:00:00 +0200 Subject: [PATCH] Fixes for Windows and MSCOM implementation Still can't pass Java objects to COM --- VirtualComputer-Core/pom.xml | 17 ++- .../java/sznp/virtualcomputer/Computer.java | 6 +- .../java/sznp/virtualcomputer/PluginMain.java | 33 ++++-- .../java/sznp/virtualcomputer/util/Utils.java | 20 ++++ VirtualComputerMSCOM/pom.xml | 6 +- .../sznp/virtualcomputer/COMFrameBuffer.java | 97 ++++++++++++++++++ .../sznp/virtualcomputer/EventHandler.java | 32 ++++++ .../virtualcomputer/util/COMObjectBase.java | 10 ++ .../sznp/virtualcomputer/util/COMUtils.java | 52 ++++++++++ .../virtualcomputer/util/IEventHandler.java | 7 ++ .../virtualcomputer/util/IMCFrameBuffer.java | 9 ++ pom.xml | 7 +- .../jacob-project/jacob/1.19/jacob-1.19.jar | Bin 0 -> 49593 bytes .../jacob-project/jacob/1.19/jacob-1.19.pom | 9 ++ .../jacob/maven-metadata-local.xml | 12 +++ 15 files changed, 295 insertions(+), 22 deletions(-) create mode 100644 VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/COMFrameBuffer.java create mode 100644 VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/EventHandler.java create mode 100644 VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMObjectBase.java create mode 100644 VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java create mode 100644 VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IEventHandler.java create mode 100644 VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IMCFrameBuffer.java create mode 100644 repo/net/sf/jacob-project/jacob/1.19/jacob-1.19.jar create mode 100644 repo/net/sf/jacob-project/jacob/1.19/jacob-1.19.pom create mode 100644 repo/net/sf/jacob-project/jacob/maven-metadata-local.xml diff --git a/VirtualComputer-Core/pom.xml b/VirtualComputer-Core/pom.xml index f280abe..e9baa36 100644 --- a/VirtualComputer-Core/pom.xml +++ b/VirtualComputer-Core/pom.xml @@ -9,6 +9,7 @@ 2.1-SNAPSHOT + VirtualComputer maven-compiler-plugin @@ -36,7 +37,15 @@ - + + org.apache.maven.plugins + maven-compiler-plugin + + 9 + 9 + + + @@ -55,7 +64,7 @@ 2.1-SNAPSHOT - sznp.virtualcomputer + io.github.NorbiPeti VirtualComputer-MSCOM 2.1-SNAPSHOT @@ -87,7 +96,7 @@ org.virtualbox:VirtualBox-MSCOM - sznp.virtualcomputer:VirtualComputer-MSCOM + io.github.NorbiPeti:VirtualComputer-MSCOM @@ -130,7 +139,7 @@ org.virtualbox:VirtualBox - sznp.virtualcomputer:VirtualComputer-XPCOM + io.github.NorbiPeti:VirtualComputer-XPCOM diff --git a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Computer.java b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Computer.java index 7aff0cf..c648b2c 100644 --- a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Computer.java +++ b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/Computer.java @@ -273,7 +273,8 @@ public final class Computer { GPURenderer.update(new byte[1], 0, 0, 0, 0, 640, 480); //Black screen stopEvents(); MouseLockerPlayerListener.computerStop(); - framebuffer.stop(); + if (framebuffer != null) + framebuffer.stop(); } public void stopEvents() { @@ -286,7 +287,8 @@ public final class Computer { public void pluginDisable(CommandSender ccs) { stopEvents(); - framebuffer.stop(); + if (framebuffer != null) + framebuffer.stop(); if (session.getState() == SessionState.Locked) { if (session.getMachine().getState().equals(MachineState.Running)) { ccs.sendMessage("§aSaving machine state..."); diff --git a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java index e92bb03..762be30 100644 --- a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java +++ b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java @@ -33,7 +33,7 @@ public class PluginMain extends JavaPlugin { * Only used if {@link #direct} is false. */ public static ByteBuffer allpixels; // It's set on each change - private static ArrayList renderers = new ArrayList<>(); + private static final ArrayList renderers = new ArrayList<>(); /* * Only used if {@link #direct} is true. */ @@ -50,14 +50,23 @@ public class PluginMain extends JavaPlugin { this.getCommand("computer").setExecutor(new Commands()); sendAll = getConfig().getBoolean("sendAll", true); ccs.sendMessage("§bInitializing VirtualBox..."); - String vbpath = System.getProperty("os.name").toLowerCase().contains("mac") - ? "/Applications/VirtualBox.app/Contents/MacOS" - : "/opt/virtualbox"; + String osname = System.getProperty("os.name").toLowerCase(); + final boolean windows; + String vbpath; + { + boolean win = false; + vbpath = osname.contains("mac") + ? "/Applications/VirtualBox.app/Contents/MacOS" + : (win = osname.contains("windows")) + ? "C:\\Program Files\\Oracle\\VirtualBox" + : "/opt/virtualbox"; + windows = win; + } //noinspection ConstantConditions - Predicate notGoodDir= ff->!ff.isDirectory() || Arrays.stream(ff.list()).noneMatch(s -> s.contains("xpcom")); + Predicate notGoodDir = ff -> !ff.isDirectory() || (!windows && Arrays.stream(ff.list()).noneMatch(s -> s.contains("xpcom"))); if (notGoodDir.test(new File(vbpath))) vbpath = "/usr/lib/virtualbox"; - if(notGoodDir.test(new File(vbpath))) + if (notGoodDir.test(new File(vbpath))) error("Could not find VirtualBox! Download from https://www.virtualbox.org/wiki/Downloads"); if (System.getProperty("vbox.home") == null || System.getProperty("vbox.home").isEmpty()) System.setProperty("vbox.home", vbpath); @@ -66,10 +75,12 @@ public class PluginMain extends JavaPlugin { System.setProperty("sun.boot.library.path", vbpath); if (System.getProperty("java.library.path") == null || System.getProperty("java.library.path").isEmpty()) System.setProperty("java.library.path", vbpath); - Utils.addLibraryPath(vbpath); + Utils.addLibraryPath(vbpath); //TODO: Jacob DLL must be in the server folder final VirtualBoxManager manager = VirtualBoxManager.createInstance(getDataFolder().getAbsolutePath()); - VBoxLib vbl = LibraryLoader.create(VBoxLib.class).load("vboxjxpcom"); //TODO: Test for MSCOM - vbl.RTR3InitExe(0, "", 0); + if (!windows) { + VBoxLib vbl = LibraryLoader.create(VBoxLib.class).load("vboxjxpcom"); + vbl.RTR3InitExe(0, "", 0); + } IVirtualBox vbox = manager.getVBox(); (listener = new VBoxEventHandler()).registerTo(vbox.getEventSource()); new Computer(this, manager, vbox); //Saves itself @@ -80,12 +91,12 @@ public class PluginMain extends JavaPlugin { for (short j = 0; j < MCY; j++) renderers.add(new GPURenderer((short) (j * 5 + i), Bukkit.getWorlds().get(0), i, j)); //pxc = LibraryLoader.create(PXCLib.class).search(getDataFolder().getAbsolutePath()).load("pxc"); - direct=true; + direct = true; ccs.sendMessage("§bUsing Direct Renderer, all good"); } catch (NoClassDefFoundError | Exception e) { for (short i = 0; i < 20; i++) renderers.add(new BukkitRenderer(i, Bukkit.getWorlds().get(0), i * 128 * 128 * 4)); - direct=false; + direct = false; e.printStackTrace(); ccs.sendMessage("§6Compatibility error, using slower renderer"); } diff --git a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/util/Utils.java b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/util/Utils.java index c6a5aad..0a67fb1 100644 --- a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/util/Utils.java +++ b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/util/Utils.java @@ -1,5 +1,7 @@ package sznp.virtualcomputer.util; +import java.lang.invoke.MethodHandles; +import java.lang.invoke.VarHandle; import java.lang.reflect.Field; import java.util.Arrays; @@ -11,6 +13,14 @@ public class Utils { * @throws Exception */ public static void addLibraryPath(String pathToAdd) throws Exception { + try { + addLibraryPathOld(pathToAdd); + } catch (Throwable t) { + addLibraryPathNew(pathToAdd); + } + } + + private static void addLibraryPathOld(String pathToAdd) throws Exception { final Field usrPathsField = ClassLoader.class.getDeclaredField("usr_paths"); usrPathsField.setAccessible(true); @@ -29,4 +39,14 @@ public class Utils { newPaths[newPaths.length - 1] = pathToAdd; usrPathsField.set(null, newPaths); } + + private static void addLibraryPathNew(String pathToAdd) throws Exception { + MethodHandles.Lookup cl = MethodHandles.privateLookupIn(ClassLoader.class, MethodHandles.lookup()); + VarHandle sys_paths = cl.findStaticVarHandle(ClassLoader.class, "sys_paths", String[].class); + final String[] paths = (String[]) sys_paths.get(); + + final String[] newPaths = Arrays.copyOf(paths, paths.length + 1); + newPaths[newPaths.length - 1] = pathToAdd; + sys_paths.set((Object) newPaths); + } } diff --git a/VirtualComputerMSCOM/pom.xml b/VirtualComputerMSCOM/pom.xml index 2f4ef83..70022bd 100644 --- a/VirtualComputerMSCOM/pom.xml +++ b/VirtualComputerMSCOM/pom.xml @@ -4,7 +4,6 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - sznp.virtualcomputer VirtualComputer-MSCOM 2.1-SNAPSHOT @@ -22,6 +21,11 @@ true + + net.sf.jacob-project + jacob + 1.19 + \ No newline at end of file diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/COMFrameBuffer.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/COMFrameBuffer.java new file mode 100644 index 0000000..c9859b4 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/COMFrameBuffer.java @@ -0,0 +1,97 @@ +package sznp.virtualcomputer; + +import lombok.RequiredArgsConstructor; +import org.virtualbox_6_1.BitmapFormat; +import org.virtualbox_6_1.FramebufferCapabilities; +import org.virtualbox_6_1.IFramebufferOverlay; +import sznp.virtualcomputer.util.IMCFrameBuffer; + +import java.util.Arrays; + +@RequiredArgsConstructor +public class COMFrameBuffer { + private final IMCFrameBuffer frameBuffer; + + public long getBitsPerPixel() { + return 32; + } + + public long getBytesPerLine() { + return 640L; + } + + public long[] getCapabilities(long[] arg0) { + try { + System.out.println("Capabilities queried"); + System.out.println("Capabilities: " + Arrays.toString(arg0)); + return new long[]{FramebufferCapabilities.UpdateImage.value()}; + } catch (Exception e) { + e.printStackTrace(); + return new long[]{}; + } + } + + public long getHeight() { + return 480; + } + + public long getHeightReduction() { + return 0; + } + + public IFramebufferOverlay getOverlay() { + return null; + } + + public long getPixelFormat() { + return BitmapFormat.BGRA.value(); + } + + public long getVisibleRegion(byte arg0, long arg1) { + return 0; + } + + public long getWidth() { + return 640; + } + + public long getWinId() { + return 0; // Zero means no win id + } + + public void notify3DEvent(long type, byte[] data) { + System.out.println("3D event! " + type + " - " + Arrays.toString(data)); + } + + public void notifyChange(long screenId, long xOrigin, long yOrigin, long width, long height) { + frameBuffer.notifyChange(screenId, xOrigin, yOrigin, width, height); + } + + public void notifyUpdate(long x, long y, long width, long height) { + frameBuffer.notifyUpdate(x, y, width, height); + } + + public void notifyUpdateImage(long arg0, long arg1, long arg2, long arg3, byte[] arg4) { + frameBuffer.notifyUpdateImage(arg0, arg1, arg2, arg3, arg4); + } + + public void setVisibleRegion(byte arg0, long arg1) { + } + + /** + * Posts a Video HW Acceleration Command to the frame buffer for processing.
+ *
+ * The commands used for 2D video acceleration (DDraw surface creation/destroying, blitting, scaling, color conversion, overlaying, etc.) are posted from quest to the host to be processed by the host hardware. + * + * @param command Pointer to VBOXVHWACMD containing the command to execute. + * @param enmCmd The validated VBOXVHWACMD::enmCmd value from the command. + * @param fromGuest Set when the command origins from the guest, clear if host. + */ //https://www.virtualbox.org/browser/vbox/trunk/src/VBox/Frontends/VirtualBox/src/VBoxFBOverlay.cpp#L4645 + public void processVHWACommand(byte command, int enmCmd, boolean fromGuest) { + + } + + public boolean videoModeSupported(long arg0, long arg1, long arg2) { + return true; + } +} diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/EventHandler.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/EventHandler.java new file mode 100644 index 0000000..9e807e5 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/EventHandler.java @@ -0,0 +1,32 @@ +package sznp.virtualcomputer; + +import org.virtualbox_6_1.IEvent; +import sznp.virtualcomputer.util.COMObjectBase; +import sznp.virtualcomputer.util.IEventHandler; + +/** + * A Bukkit-like event system which calls the appropriate methods on an event. + */ +public final class EventHandler extends COMObjectBase { + private final IEventHandler handler; + private boolean enabled = true; + + /** + * New MSCOM event handler. + * + * @param handler The handle method that handles what needs to be handled + */ + public EventHandler(IEventHandler handler) { + this.handler = handler; + } + + public final void handleEvent(IEvent iEvent) { + if (!enabled) + return; + handler.handleEvent(iEvent); + } + + public void disable() { + enabled = false; + } +} diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMObjectBase.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMObjectBase.java new file mode 100644 index 0000000..947df62 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMObjectBase.java @@ -0,0 +1,10 @@ +package sznp.virtualcomputer.util; + +import com.jacob.com.Dispatch; +import com.jacob.com.Variant; + +public abstract class COMObjectBase extends Dispatch { + public COMObjectBase() { + super("clsid:{67099191-32E7-4F6C-85EE-422304C71B90}"); + } +} diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java new file mode 100644 index 0000000..98f7c52 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java @@ -0,0 +1,52 @@ +package sznp.virtualcomputer.util; + +import com.jacob.activeX.ActiveXComponent; +import com.jacob.com.*; +import lombok.val; +import org.virtualbox_6_1.*; +import org.virtualbox_6_1.mscom.Helper; +import org.virtualbox_6_1.mscom.IUnknown; +import sznp.virtualcomputer.COMFrameBuffer; +import sznp.virtualcomputer.EventHandler; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; + +public final class COMUtils { + private COMUtils() { + } + + //public static void registerListener(IEventSource source, IEventListener listener, VBoxEventType... types) { + public static org.virtualbox_6_1.IEventListener registerListener(IEventSource source, IEventHandler listener, List types) { + //new DispatchEvents(source.getTypedWrapped(), listener); + val ret = new org.virtualbox_6_1.IEventListener(new EventHandler(listener)); + /*com.jacob.activeX.ActiveXComponent.createNewInstance("IEventListener"); + new ActiveXComponent(""); + source.registerListener(ret, types, true);*/ + //registerListener(source, new EventHandler(listener), types, true); + System.out.println("Testing listener..."); + ret.handleEvent(null); + System.out.println("Tested"); + return ret; + //return null; + } + + @SuppressWarnings("unchecked") + public static T getEvent(IEvent event, Class cl) { + try { + val method = cl.getMethod("queryInterface", IUnknown.class); + return (T) method.invoke(null, event); + } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { + e.printStackTrace(); + return null; + } + } + + public static IFramebuffer gimmeAFramebuffer(IMCFrameBuffer frameBuffer) { + return new IFramebuffer(new Variant(new COMFrameBuffer(frameBuffer)).getDispatch()); + } + + public static void queryBitmapInfo(IDisplaySourceBitmap bitmap, long[] ptr, long[] w, long[] h, long[] bpp, long[] bpl, long[] pf) { + Dispatch.call(bitmap.getTypedWrapped(), "queryBitmapInfo", ptr, w, h, bpp, bpl, pf); + } +} diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IEventHandler.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IEventHandler.java new file mode 100644 index 0000000..7a61468 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IEventHandler.java @@ -0,0 +1,7 @@ +package sznp.virtualcomputer.util; + +import org.virtualbox_6_1.IEvent; + +public interface IEventHandler { + void handleEvent(IEvent iEvent); +} diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IMCFrameBuffer.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IMCFrameBuffer.java new file mode 100644 index 0000000..ebec8d0 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/IMCFrameBuffer.java @@ -0,0 +1,9 @@ +package sznp.virtualcomputer.util; + +public interface IMCFrameBuffer { + void notifyUpdate(long x, long y, long width, long height); + + void notifyUpdateImage(long x, long y, long width, long height, byte[] image); + + void notifyChange(long screenId, long xOrigin, long yOrigin, long width, long height); +} diff --git a/pom.xml b/pom.xml index e61e47b..8340ba2 100644 --- a/pom.xml +++ b/pom.xml @@ -15,8 +15,7 @@ pom VirtualComputer - - http://www.example.com + https://github.com/NorbiPeti/VirtualComputer UTF-8 @@ -75,12 +74,12 @@ 1.12-R0.1-SNAPSHOT provided - + diff --git a/repo/net/sf/jacob-project/jacob/1.19/jacob-1.19.jar b/repo/net/sf/jacob-project/jacob/1.19/jacob-1.19.jar new file mode 100644 index 0000000000000000000000000000000000000000..06882a0948007aab39dd2b560048bd166fcad201 GIT binary patch literal 49593 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 z + + 4.0.0 + net.sf.jacob-project + jacob + 1.19 + POM was created from install:install-file + diff --git a/repo/net/sf/jacob-project/jacob/maven-metadata-local.xml b/repo/net/sf/jacob-project/jacob/maven-metadata-local.xml new file mode 100644 index 0000000..223f446 --- /dev/null +++ b/repo/net/sf/jacob-project/jacob/maven-metadata-local.xml @@ -0,0 +1,12 @@ + + + net.sf.jacob-project + jacob + + 1.19 + + 1.19 + + 20200811112851 + +