From d3dbea885c2a04b7ab6e4dc16418574ef5bbc34e Mon Sep 17 00:00:00 2001 From: NorbiPeti Date: Mon, 23 Nov 2020 03:22:09 +0100 Subject: [PATCH] Using Variant instead of Dispatch Getting an object variant instead of a dispatch one --- .../java/sznp/virtualcomputer/PluginMain.java | 4 +++- .../main/java/com/jacob/com/COMConverter.java | 11 +++++++++ .../sznp/virtualcomputer/util/COMUtils.java | 16 +++++++------ .../main/resources/VirtualComputerWindows.dll | Bin 8192 -> 8192 bytes .../resources/VirtualComputerWindows.j4n.dll | Bin 15872 -> 15872 bytes .../VirtualComputerWindows/EventHandler.cs | 10 ++++---- .../VirtualComputerWindows/Exports.cs | 22 +++++++++++------- .../VirtualComputerWindows/WinFrameBuffer.cs | 1 + .../3.0/VirtualComputer-Windows-3.0.jar | Bin 5859 -> 5859 bytes 9 files changed, 44 insertions(+), 20 deletions(-) create mode 100644 VirtualComputerMSCOM/src/main/java/com/jacob/com/COMConverter.java diff --git a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java index 9d5ace5..a7b7806 100644 --- a/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java +++ b/VirtualComputer-Core/src/main/java/sznp/virtualcomputer/PluginMain.java @@ -134,7 +134,9 @@ public class PluginMain extends JavaPlugin { private void error(String message) { getLogger().severe("A fatal error occured, disabling plugin!"); Bukkit.getPluginManager().disablePlugin(this); - throw new RuntimeException(message); + val ex = new RuntimeException(message); + ex.setStackTrace(new StackTraceElement[0]); + throw ex; } // Fired when plugin is disabled diff --git a/VirtualComputerMSCOM/src/main/java/com/jacob/com/COMConverter.java b/VirtualComputerMSCOM/src/main/java/com/jacob/com/COMConverter.java new file mode 100644 index 0000000..6ae3db1 --- /dev/null +++ b/VirtualComputerMSCOM/src/main/java/com/jacob/com/COMConverter.java @@ -0,0 +1,11 @@ +package com.jacob.com; + +public class COMConverter { + public static long GetVariantAddress(Variant variant) { + return variant.m_pVariant; + } + + public static void SetVariantAddress(Variant variant, long addr) { + variant.m_pVariant = addr; + } +} diff --git a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java index a0d3744..7185698 100644 --- a/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java +++ b/VirtualComputerMSCOM/src/main/java/sznp/virtualcomputer/util/COMUtils.java @@ -1,6 +1,8 @@ package sznp.virtualcomputer.util; +import com.jacob.com.COMConverter; import com.jacob.com.Dispatch; +import com.jacob.com.Variant; import lombok.SneakyThrows; import lombok.val; import lombok.var; @@ -14,10 +16,10 @@ public final class COMUtils { } public static IEventListener registerListener(IEventSource source, IEventHandler listener, List types) { - long handler = Exports.GetEventHandler(listener); - var dp = new Dispatch(); - dp.m_pDispatch = handler; - var ret = new IEventListener(dp); + var variant = new Variant(); + COMConverter.SetVariantAddress(variant, Exports.GetEventHandler(listener, COMConverter.GetVariantAddress(variant))); + System.out.println("Variant as int: "+variant.toInt()); + var ret = new IEventListener(variant.changeType((short) 9).getDispatch()); //Object variant to dispatch variant source.registerListener(ret, types, true); return ret; } @@ -28,9 +30,9 @@ public final class COMUtils { } public static IFramebuffer gimmeAFramebuffer(IMCFrameBuffer frameBuffer) { - var dp = new Dispatch(); - dp.m_pDispatch = Exports.GetFrameBuffer(frameBuffer); - return new IFramebuffer(dp); + var variant = new Variant(); + COMConverter.SetVariantAddress(variant, Exports.GetFrameBuffer(frameBuffer, COMConverter.GetVariantAddress(variant))); + return new IFramebuffer(variant.toDispatch()); //Object variant } public static void queryBitmapInfo(IDisplaySourceBitmap bitmap, long[] ptr, long[] w, long[] h, long[] bpp, long[] bpl, long[] pf) { diff --git a/VirtualComputerMSCOM/src/main/resources/VirtualComputerWindows.dll b/VirtualComputerMSCOM/src/main/resources/VirtualComputerWindows.dll index 305c13f1a342fd18eb9391d6d73283f021e6e0d2..f1437327a9b7998f89b443c5b3c36b61b9886954 100644 GIT binary patch delta 2612 zcmZuzdu)~E9e&>TyPR`A%i;92^hR6T9))jhfl3=`oeGo+ZDdkbsNg_*pa&_G(|UU1 z97Il)#2a|2AM%Gf=WsCw-ImaW#le=CEJmYQMlxOI1urq(ny3v9v&eMW^LzV2|M6?y z=X;;$cYCj2&-kkGRZl!*yO|qjfZYZ z1ef6^J~bClS9jczc!4mU<8FdwB09CtVtN>rO?YgN*x5w@I5U3zI<*dd*>Ld!spVo^PSqJs!54O_AQJGr z=0y0ou=Ojpi@OZAtNr$Tyv>DhF`$lEF8*oo4TD>>C|4Q0!QfAgzFs}b42=d~Hp-Lg zw07~VbG_wZrQP9r_`(tVi_=kXUEE?zz)4HY|F$})47$?aWt@6lQNGsVGiHlkMcw7W zyPoAA*MfgHsHk}OoCRbmvK+D!@|Qr3-R`V5{rh-aTO45)x47_2Iu+3<3l)Q~*R5IR znZS3*R?{|*3%bJ2Q(KRFcnB8Z01&n&f4%U*OYgmK*w=R)E(8&kiKM$6L`}(PV>hhTVn~kVAwHyX1z$(R?k2jLzVsO zaHbr%6LEhhchWqsJ2mQ6TydHG3a^1zBDB4Uw@`|m^-|xA^lzv{-Xxt;3H2V2$&rvf ziBD0BmqT_2pCg4gLbeHC!^a09+hcvp3pf+91D2(h;H!|0z*Ea`MT69vQXe@;*?yYskJcHo8h+>>G$}MacR&$2Qy;vga(Ztqxh2+d$S8vQ8`} z>kirbyoqhhr%+hI)2(oU`>!D18I5Kh9}5Yi$VWiqHExvR?$7m0=%dg{)YxtOXS94V zPMN6h*BzWPB|A)&+nCeBjsjmcB$(#QC6yd4rsl_!PX98ge`BoQuRAzwQZF-6-6r)$ zlUZUN%*IMzo4$oJv?|yR_g|yR%*JMcOa1#zqB~9bdSmsJSj*XN;_=(cyRy%gVeaF# ztR#B)0WraEykLjH)dqVEZZx>nV4Ao9L((tcE+hTS;C)0FXEEl~;ve{Z~WXDIr0^m*7>iSu|zZ^Jj(;0(|@gI!Qcl%+iP>(o+|pqIE1Bg7Q$AvWPCvDM%Y ziTjpfjWOJer)lUjhMySRiIY_J;sfFsrd1VB`nA}EEu23W1Jj!SDDYcHP+5ZCLGU)G zjdENDV>lWVyag-eTf>8O`Pqva(^uU1x#t@00k{O~ z*w)X=n|reP*5#9Dy+2rXdT=loJQB~W%G{mF=DX9`!Qo5}yTf9Vvonu%nfxv3{LtN*{&a3Aoy`Z)#HP~O zyhxk$n5`Q0C-w&KCa&d=g~!gHz4+Xp)^z_OcjC+Fo>#96s*A5IKvh)RP+o-{QOV8h zscOzMZbg(wQsG4sN~>B_*q%xni0T@L)+k%dszcm?j>qE?7?1vb|F-_hwvQjS++;$# zny(+RRj@_bHnNpEbxI`@27CCyU8th*s2qJ4+Dn#t=9TbldU?UA;^k_4FkRfdY&$E( z>^c;u3CRo@U69;v`ILQ;eUW|2>}(IZk{6cXt;*AP$ku4KYVLQn{BYw9{&8Pd-=Pzc zc{lv^jx{I0z4^tbKm6#=lY=Eul^h6v#YxnD>DNuvm+9fw;8^J^lku{P5q+d}vbc6e IO|(S*570z~3;+NC delta 2422 zcmZ`*Yiv|S6#i!B-n-jNyWQPxOQD5s*#y^Z#iff9)M!BnR#96@)v8fI)DmIAwnPzO zi$+CEjLQ{6h(FXA;{%OSj8BZ9Q6xTMRN@Pw5jDnl6pg6pcczzsQKz}zJ>NNJ&YYQZ z?sSLRhuZI0Xa4-*+461U^b2j}htG>GX#>s$M?28ym78lS=L41GQzlapH0#!&R~@5Y zP6juqHR*fkE#nM68ZKr|0Dg!8hRg%JU`Hw+bn3>^cseK`0li8CPTe8pd#$>qO0S~U zG0Q6GjNC-%y47OOHRKfBGxX=L7qYQ?y9rST!n>6l(Gs6RDwZ z0;z12Vf}uE5|$^CrGuZX5lG4WY%OtO4yfT`^_=9`1P7{Ql9#O$$I*mQEr{d}`?w=M z%=+IxGjz6E0z;eCjOFAm;dVtZsiISKi!rCTj8<;+Ixz%gGhR8t<7RY)M2|27FL>M3 zoI)vqI==;8&PQ$``kBRYlVyrWr=Pn5{U^{+t+Hc|Sc0_EqMCv^PQH|41u|=ZA-?}$ z-kI*f{>8;B2e=NdXG!Pqo$2YuF3NI@nb|!ZGx>g>yq;Ca%viE)A-N1vb^hr4#<5Po zK~(@xhi8B$J`68M2dOce#Oj%m2Q~sCfpRk?-~lb}qV;vZb_R8XGvm*HGmMXw?rzt^(?;Z$2>JQI>!*o>CO5^vb(LVj6rujt?!Po5;}~~XtOxqh0o3HWUV1reBbU;g!EU=URTkqm|yUb}e^n4cFpwHfg zGS>~~$})-tkjP_+2H)Apy%M?fKL!_N8=BV$r=4R%pKn9UWEXa_4WzAXu#;AW-CRuL z5u5bU@;V!5sa<}nwZ@frmd3H&&SoPO9K|j#@Dm$D^jYbG6X&HNIL+d8iyaobEcRMl zK&-`LD_?DKrNy;G56@WKfdk0kHGHI7@iuDRJVbLMc9if9PR0kA=FY;W=yT7+SJvrA zi<2-4Sv3hYm`rRyCozLwVhdIf3l>kdc)Hb}g;msdTg^olFGE1hRoG4(z-~2`w_z5i z@n7i$xERws9vbkyPVjZ1D;P0?MhT|fTH=FN^Q}9U@*Fe~w>z2O7JuqRDbqvO3T);b z>I_K%jvgcT$`Q?cCND#=2ab%LEJrwcI*NmZHV{voGTbogSrdF1TjcgFC@xwuyr#NJ zMS6-?6_;I83?7Zo3mOuar)uZoatvYx`cb5`2qz&OloC_pV<)#4_BwsDZk_jKdCQ{D z76!W#O{IuRb~sR~(L|JQ(uldxu~Uu+vr LjQ?Jh^O3&+nqym> diff --git a/VirtualComputerMSCOM/src/main/resources/VirtualComputerWindows.j4n.dll b/VirtualComputerMSCOM/src/main/resources/VirtualComputerWindows.j4n.dll index 0725c9bfcc0fa702142867994d8675dec97405d7..e369d4a378311e47f1647bb562878c35ea18f6ce 100644 GIT binary patch delta 3531 zcmai03vg7`8UD_>uVkZnERTd_vjmpM(&e!*DUBdX21RgU2#|=BVkgED#Ia=7s7%>m z<47|Q>Coj8YBe}uBEDui$}$;kbTkZOtwSrL4iXA&1CpT>8XUBwR@?snxi@5Q5~rKV zcmMDE{`3Fmo_p`Pw<+Ef|K$#?)#yq-T`c~Qd}WPjvxP{AFYPA@PuN0^F{-Bk!tR~_ zgH)BgAhJ3I8e%6I2JFRpK`;tH2l61pHvvB1_)S?b^{@s+jPO{yTQ7`?T*^Tf{KdGL zLQxcz_>N(chuQDy0pHM|RGoexuS zvsWxpkieV#0Lzb$?lrS~ zXmsx=%jZV-{=;%WCzwwVPIzX1FY9rJk&}6zsFa#}C^Wn7XRz*@Q#_)_| zrgcYElrn&o%UvBZASzfiQ=z5epVI@3fzXZ%!KX69fk-NPm# z)@9v?GiIZ1;*fS(&&IdLb<>9h`b&ftHO7e5NI9)mJLNo!RnmvEvYnKTS~peOU~q*g zW;bQ_Q%*Me&Ff}1&Z;_(sLY*Odx8v`q-=C3<9;=`f?E1;n;N`H=LU;O@#Cm**zzN2 zG5(&=#91}b27MkqV8CI)DAZprX3Fd4I2D7Q+rLx&S;RE@&&2}eNhD~A$h<;xn*~YR z0hn^yi811-V4gh#1t4*#ZT)xjvnk=JZxdY zLl=42?H*Q+F*s@Zq!)jN>>J8-6(3aCe?zY-;WgQpanAHhfqKQ73(Dvc(RNvqVDm|$ z#YDF%Gl|n8UrKCu**a^Y)bWkWw$ZYhxMLCxLlSSIRAyqA%Qj%4%)%+foQ64`hB?%b z$2t9S&_4;>-)WeO0k;e{^rMz-7gp76DI-fTu+OTF9xwr&Nrv zVtt~)YQRM7AV&R@;D#mmz)j^doQzz0!3-|jR8Nbko)%LPR+-L8Ov5h4`ow$MHH0yC zDp%#FiJC4u(9vpKSpY96$bq04xBFu51+$&Z9Py@%Bkr=OI4YZP%4JpJxZIA?IZo!|;xoAu+g-Mp zZqi@igkpUnao*~cNzWqg!9~|(Z;!{b0scmyE6Sej@%Ex1&D-noS`kh2T8F&v({s3w z3JP>sgD7#q93KCiJ}M+SbrK@U& zs%E;?{!flQsc_E3p~~JFy1nepg}X(C{ole6VW?=%iV8K)^ve6x{8=~9l(u}%m3dAr z-%}$-xw?I@s93bv?-qq3=@*YLM*8(17TY%mCeAH01%1u(u04U!hvkI1SgCM^($^9e z)5H9PR*IWYX0HzvCwQN$#Wwvhl%q^D(St5g%dy!+@xQEQ{2D1^KjGI#2W9?IyoR-C zv%2sG<-A8Zm&ET_mw&+D@ETP(2(HV}ez%G3{VR^#h z!`q7N)i}d6w`2>w@T}sb3MZ>0MrbMb4(T=06FGFixvOh)UJb4ja_k zDSn$ULU^9yD*Zg~yn0B4aFsAZSV!?5qmJS|Mgirl!fqVFDO^Inh=}{dqv9FysyHsL z*?%d{FX}TdO4=AkLpv|H(BW&ef7jZ!j}o% ySCF?TZ;>x`aNg&d|5)|VwEoO-NpjM7aU%7`{N*B*UG}vmua>6rZtWMzsP#YlKz&*O delta 3529 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 VlvkLkJP>ZfWNR^3kVKPMA^^AVEfxR(