From 693cff45b09b3ca09784a3038a3f9c89cacd391f Mon Sep 17 00:00:00 2001 From: artdeell Date: Sun, 29 Jan 2023 22:17:24 +0300 Subject: [PATCH] Infdev cursor grab: the Pojav part Also featuring: Window resize on first key even poll --- .../cacio-androidnw-1.10-SNAPSHOT.jar | Bin 37334 -> 39478 bytes .../assets/components/caciocavallo/version | 2 +- .../src/main/jni/input_bridge_v3.c | 3 ++ jre_lwjgl3glfw/build.gradle | 1 + .../cacio/ctc/ExternalMouseReader.java | 6 +++ .../openjdk/cacio/ctc/InfdevGrabHandler.java | 10 +++++ .../src/main/java/org/lwjgl/input/Cursor.java | 21 +++++++++-- .../java/org/lwjgl/input/InfdevMouse.java | 25 +++++++++++++ .../src/main/java/org/lwjgl/input/Mouse.java | 35 +++++++++++++++++- 9 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/ExternalMouseReader.java create mode 100644 jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/InfdevGrabHandler.java create mode 100644 jre_lwjgl3glfw/src/main/java/org/lwjgl/input/InfdevMouse.java diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-androidnw-1.10-SNAPSHOT.jar b/app_pojavlauncher/src/main/assets/components/caciocavallo/cacio-androidnw-1.10-SNAPSHOT.jar index d6c653f43116a5a5be604a93fcc38aad946b8b8c..778ad9356b006680cc4bbd67b52b52a85df8cb30 100644 GIT binary patch delta 9084 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 TPK?hAU+{mK~Opb=}tkq75&HYd%t(F zzV+X=?(B2-eRkcmPwi=LM4Wwth@+{3gp3LJb0JWRr{FN+0I0?F1JC`NU0|&66e%r8 ztn&HU6Z$dv@))LaHcP(27yVoDx+tst^Fup!G z*Wb1i1psKrh4MY8gK8$@H)zq0qx``%m=m=j!5dp_hv@LeG=D!3-WUut{fnWqU_yj* zOq~b+Hck;@(cqkW|3L(JgZViDGThiQ`?Y&1%)dS&D4&}U$^ioVZHO-=x&7kVCewm^-uHu*0 z`Z3j9*?pn0_j{sgp=L&}WL4^VWE5W~JUu;R-23==G3Zsu*w4%1Bq@|yLI_3=hLtF$ zP*##GJ#L%`A*4qMU+?H-5u>BM z!B9PEU!E8yxh`~hThU`87242cHt?%wN@gu& z)_VmY%>+7pmGc%B!d{H%AkipImF{F%>dhRmTp^aXcm1OGtPebQkLtp9KY>* z#(W!{@(G9_;tyV88s;vYn< zX&0BTS4ETQJ0gMP3D+Nk4iOgjo2w|lqmb;4Mk)37)Eg=e7DSE((@m#}95&jt${kax z+YtV!?tRqcq4VLXhqJs>@~@en!jC8i$H>Y?7Um%`8C|P=D6@1(DsK8_2{Kc*H1sLT zhy-^71iz9dl;1&>aDAETbN1qOSA^#B8_oipHCvrEViG8dg{_noEuU0xJ(+OzWjd2Z zby^-{{!vTKJF`N~;mUOOs9~nZ6#Vp6r{|RRtL!WnR_a z`gleVhJ_gf5R|={zl@-=7b%AF>0q`-Neor?76OMTqu_mAi$}$xyQoQZipbaI-NR>3 zQ*pAT?HtU1a38UIH$)X&Y72kT8lCJBtk`dLw+4TU2Iv8w4s!yx6W#m8^w^)G2URhS zPyK3adb=)NQ$A$bT1R{cX~JqPo+(J(ix~FyXgy?P&#id#r^DOjz2nH&K!dkkre1uy!LQ3*T%n6U5qGb($}qVE)A^Agh#1hMMH1wEt8fi)#@Lm%nPeA{|STR<)pG+lN=0beSyBo!{PwT=-l} z_nA6BomJgC4x=Nfa>B;VozyTVrrvAbG;gQ$lcC+&mZG%z2_a@(e)=Ad;iW!x6#GRXp481UwzCBO` zx~b}YtdOg_b(Yj=HeKr5+}R_X#&2((;`l_WQOD1%ZR@IN_v(9OD;;S2@?@r@AEI4K z`I%4H-*a&c=Pf_RU@Cta7%Qtnqa?8+7`*(PoAgplH0aZYTC$q$)q9rI#Qe>BkL!fx z3&<70Cg=NPb7AM#+p}M^#_LTC)jtqz1K*#IHsp=RKSK5Z>aVFcA8$a55m&7swnp9Q z_wB=Xt2>V?i=0;9bXQ(xUM8;ceudQgYp)EixZTVlJ`zlPQ#1)Cmm&xyNKY`(Y6_wZ z8!ijgU^CPZB~4Fb{#mx`?SkM`hu`3V1}f7k!2}W*92iYDW_M452^e zan{2%C^+;HxfxlYmiQc>ArEy(;m(p=aqOoxy{c(vejR{GG z?_)8gLe%`Z7uAgJwKFB3%`7c^8bJ#EzFMBkB0C9%%q~BFNK||nfXoWb{s`VIGf^ve zKa*mxg;_*ESV1~|M|^XO-HZh(C6PuI`e4az#hXj^DLq^Yp?L;rG1isBg`=6HmVh}N z|HRYX@a6ZNU?%n**R6AvBf5kjfuMRJMkzdbMGgA3$9UbxMQG*9qwmvEgp1Xj)0+-% zIi-2-8i&T4I2M2mn}!q2Uh8dld{wcD&ull{7GkKOlvu#uRp5KNFybi4k~v8KY%<(E zW8(7lK0AdlMleWp%-)}ZEUTR?2gJWTlAIR&rN^LcINwmhy-6T>qniEOp}|UORG<1b z7aj5QQxp(T#xYZIpGKD@Es$AjK~DJqz(*Gh*A~2u2^NK%^@1|xw_XMqWk@o4UJM&FB zM>$At3v?W96haCf9xu#J@gRQVI*Bg8r0ct7XmU{mK609gJ)SrNXVV3dj71!A<1MS= z<(Kp7og5dkRcT5lL|1FhOtMumeugCLR{@R7`+dG6y=+mgbJ2se0j!G(TGRK9!6;BAZ`AGbcdR?G``cmwC5IkX$-!U@eO8pw%ISDCoeZI zlF=w{&n=md4mBeLC2Fh_i?QqP5MLu-SmSPMMQ#!dTxmsGrPYPR``&qG^soe2NPc|t zOK^BuprfIHX?gdCJ*40$2!X+$V9+D4fn_cTWdF_K*eR56P)N%3dpv#NOh(!2kjpI4tv%2&Fm1ePRwi_(BO|mGm89RMugCQ|M>&&ZGT1S7 zOk*fnKS-=HV6GuqH*hWp%%!t!8>@U_G;eECA&1HlUN!U^@1MOV`k!5|zG$2#IyE`~ z@RbAr;DGWm(?LJ0<3aYpKm(HBk}7pJ@`+UM{d7v-?x)I`6Q)EKmtZ1%ttTQE_hi^y zs|~Na;7pP%Ah#>%2$w0G$Y^r0H48dKeDcZ>YJvGYlNbVy0bt+Llq zB5%U=cCaM{+903b>3+>@5qQT%-Z&*}oi1oC?d@~>ooC=<>=A!n9$)LH8YiIfY<+91 zvH5v=h8&wX-(x;^qk$Z5B@<;Zk9W0;$5%ZHcV5bJ4+2NZK0~`3GuMw?qItR4EDLiw zy1|T|$?hIH#MKo#Ma%Kc1i4iLP#3V4LrIg-=vBxm>vzZ-%LP5Y;g7L;)I843Yw871 ztv0ns{Mgfe#BEDST?M|blEBom24zJxxAYb+pJ5-O8|pqSej_4@V+WG)7Z}6D!73vu zCS-2~eAnuY#*~{?mPquXINo^oCHQQQC~<02aTsj*EzmNbgha{~=$$7vo3R>g-3rjj zI#oW~R`!G>tQ{N>=g4+h`_syR!f1Fe0-a(PYt{}@`#rde%eq#ID%8)?FBN08J{;5p zbLhJ+dLi@ZxFxIUY>|!kl?I1I+UeKJukYD0892=9TeEbulvh_)IHp*Mti`%!^Hn`D z?x;3v$lyGCBGt&zlvW9`@DdD?=V=Y-D%3#)9q2<2yUteZh$Ew}k&9TT)H_pKYBE2@ zva9k}vlw=bTn=Gof8BJ;E#b(S5WYFrGf&5%72t9fp}X*P(~F5vo3{EmnL$R4?K;3Q zlXuAL0$umOikN!s6zCNqmc3JhF^ns}S^MfYb#L5LP;n1SV+#{wGS&xzN3UhxhNv4x zZjWd~4g|;|DTZ|`Ph9djWjQ+6wg)NYbyZDlE?hokutizDa!%-YuT9dHlJ8yCCnB@! zHn%~MH!8mfN&SoCwq`X^-VC7EiaOEsv$cv zgZQIvgJz*lH^W>_y4Z)!?+8k-%M4W2{O}?-AngVLh1_+jLK*p`ZbICjDpmA)y%|WK z_C3#}70?dW**-|ymHtNDL_VeJ^7&DdF$et{6ekaN#v#q2s19a9Cx*A}BUIUiEV4*d zs)Fm&^$GEeA#&hOAeSCuu7G?@h#bM-WA zj3J8%IAOM(+P;FKK3??|;_PWVgA1P8GUlx0zv$?xSmkFF%&Z)B<9xJ>*AgTJV80_Pt>in zmg)Et^Hwl4K_X%M$1tcduMQoHWvf$^P6A>pdxJw_;mzP*QvtM%nH2#01_rP1q@Uh? z_+ZoJ!4>v?>V_*cbKv+C&FQs~tVKN+;jT%C5A;icU$x+`=tak$7!W&=u6Nd?qi3B} zxFUBiX_G8o;U!XU0O$@?#vTDHz@yDb`s@}hP1Lkz$16)T`uPTnV#(kWg;Ci zy&0K@u5q;6xFfXmVjpufEvgASeO5{%z!gz~Tneec32V_Glhdw9y{xIYI$t+Lr^rx` z@*Agedt>ipgXY2*N=gOZt3(>y3q|K^v&SFgZR1roe6p}Pu<8Gz zz|5a;Fr-*oo^F25wM2v7r=n@v=W!TRYV{E=>(ZdYiu9p{NPXPR2siFX;*u<6cVll3 zmk=VaI<><5HtPjBEx{Tm;l*wM{_bA)sf6n`x$OkshN#lxICB2fKJfLU(LEfMzq#xD{O4xkt=t-D~m0ihKo;?F4*e ztf}9dH{m?2-VD^`Kh>B-Hy~QF()Wxck@gd%W%wP*&W5S^SS44eog|K$+3XCnZ-GlI z48s{(jwjz^jc4{lNSwQp24k4F+l~wEJ#|6fsV+bqEkxQARIGcEVV7^$vUNGD)K2{9 zfk~Z7j6Z{lw@R<+ZpW3L+S8=|PE7Nm%gObL+k#x9tB?TYG^_+Z#fX-Y;CWn7yFYgWpH6TmE=jx6mlB_Q=FGA<*s4go{ib=apJ-rU?m{B?v#}^Bsz63X z0sw4K0RSHO#zHEUpaGEz9|>Mey4CAP{Q;|7IpFLpnMJz5H0*)>c?goDg<)e=F)7M?T93D$K7YL2+jLgPH19&PaqSj1p{97hnKlq=6M@`9(dgLc`SH!BriXkr}X~r zV44(w;ljQr%ZZJ0O%jezsz9_8#vAv66Qzzbm@`@qACDYWXZwp=o%Ygj3H#?v6G#AR zhTWdVg8t$pS80{7*b6P4tcwZJr8M54W;I?@J|4EVjLitb5vJ2Ae<6p7+%# zNcNECzPZYH8073&Iqz9!YY_)rlGqscRkTN!pWa9r&EI4WnX%@^Y+xLz=f#+MzqY3k zqUe4l76pn|aQ7&&1RJA5p2gmLviQDX#ZE$$rR#~a$*x~pu|Y7aD>2X(3&9C1uuOP% z^;pO{>-TS0@<^L!vhPL{xLv^*u(B4Iy9w$~M@1xyiVdBRWZ3DYJ*6W}!l&^&<>*&54Nkk! zBc+iw+*6!W;Y)=c67wZUFhGu9Jw_8xFZpU4#H`|;tk;gx5@WK}C%BQnvW``80u^Rn zk(Fq>nU9WBzj4eQ1{dxc>@EKSjBkA*?_h~0V%!q%jYsd2eEA!BQ>P2ONBR>xjEL2Y zSR#EhdU8Yi6}nZU_X|Jsl1`9g1J}@7$2Dx6n^=Y51ae)1bPmQgYb&K3;xIV@ZD80D z;hB<8QnEpjk&KiW*4-w0e_Aa+KCK|Qe4$YS;UYxA;h1tg=_DEEwehidJZik007?*p(jAP26KY@zjfFMEX%(mVh=|i2{v+IV*yGN!Tx8oKvg58 z;WRly3+akVykRRs7?tqPV6kLP?G1*NlwZJZIRMl>TLS7BPXWPHF2o|J!VGUzZYT%l>=#)WiwgQBlku=|Qw9(Y zd~hUu09??513#^eX(zLc3voA#DtQO^b*QHD)II9|!^rf@lt%q~wEYr2Y;3 z-&Ftr5O`op?-{ILrQ!aBw2jWR!h%+Z1*6umXeRe~g)>0};y{;jf2mNTD_9 ze+@RUhqNccbdYwwv>gz3^mMvn(KDTL?5T>u>hvz#ex)psylWp{rSclko_~ z;s}MY#MuAsOW5q8pQQEca22M;1(uGI53E2!VN-|-Jnn}x%fG1Nu-0(+Jo6}r5SIbK O0ARxg05T)~0R9i>KmH8> diff --git a/app_pojavlauncher/src/main/assets/components/caciocavallo/version b/app_pojavlauncher/src/main/assets/components/caciocavallo/version index 2a8e424de..a902c66f7 100644 --- a/app_pojavlauncher/src/main/assets/components/caciocavallo/version +++ b/app_pojavlauncher/src/main/assets/components/caciocavallo/version @@ -1 +1 @@ -HEllo PeoplE \ No newline at end of file +HEllo PeopLE \ No newline at end of file diff --git a/app_pojavlauncher/src/main/jni/input_bridge_v3.c b/app_pojavlauncher/src/main/jni/input_bridge_v3.c index b3fdff771..b0475165a 100644 --- a/app_pojavlauncher/src/main/jni/input_bridge_v3.c +++ b/app_pojavlauncher/src/main/jni/input_bridge_v3.c @@ -252,11 +252,14 @@ JNIEXPORT jstring JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeClipboard(JNI return pasteDst; } +void Java_org_lwjgl_glfw_CallbackBridge_nativeSendScreenSize(JNIEnv* env, jclass clazz, jint width, jint height); + JNIEXPORT jboolean JNICALL Java_org_lwjgl_glfw_CallbackBridge_nativeSetInputReady(JNIEnv* env, jclass clazz, jboolean inputReady) { #ifdef DEBUG LOGD("Debug: Changing input state, isReady=%d, isUseStackQueueCall=%d\n", inputReady, isUseStackQueueCall); #endif isInputReady = inputReady; + if(isInputReady) Java_org_lwjgl_glfw_CallbackBridge_nativeSendScreenSize(NULL, NULL, savedWidth, savedHeight); return isUseStackQueueCall; } diff --git a/jre_lwjgl3glfw/build.gradle b/jre_lwjgl3glfw/build.gradle index 57ce98e4f..5420e7268 100644 --- a/jre_lwjgl3glfw/build.gradle +++ b/jre_lwjgl3glfw/build.gradle @@ -20,6 +20,7 @@ jar { it.isDirectory() ? it : zipTree(it) } } + exclude 'net/java/openjdk/cacio/ctc/**' } java { diff --git a/jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/ExternalMouseReader.java b/jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/ExternalMouseReader.java new file mode 100644 index 000000000..4dfa6934b --- /dev/null +++ b/jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/ExternalMouseReader.java @@ -0,0 +1,6 @@ +package net.java.openjdk.cacio.ctc; + +public interface ExternalMouseReader { + int getX(); + int getY(); +} diff --git a/jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/InfdevGrabHandler.java b/jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/InfdevGrabHandler.java new file mode 100644 index 000000000..3af42ce5a --- /dev/null +++ b/jre_lwjgl3glfw/src/main/java/net/java/openjdk/cacio/ctc/InfdevGrabHandler.java @@ -0,0 +1,10 @@ +package net.java.openjdk.cacio.ctc; + +public class InfdevGrabHandler { + public static void setMouseReader(ExternalMouseReader reader) { + + } + public static void setGrabbed(boolean grabbed) { + + } +} diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java index 9604aea47..b59e322d9 100644 --- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Cursor.java @@ -29,6 +29,9 @@ public class Cursor { /** Flag set when the cursor has been destroyed */ private boolean destroyed; + /** Flag set if the cursor is empty */ + private boolean isEmpty; + /** * Constructs a new Cursor, with the given parameters. Mouse must have been * created before you can create Cursor objects. Cursor images are in ARGB @@ -59,14 +62,19 @@ public class Cursor { */ public Cursor(int width, int height, int xHotspot, int yHotspot, int numImages, IntBuffer images, IntBuffer delays) throws LWJGLException { - cursors = new CursorElement[numImages]; IntBuffer flippedImages = BufferUtils.createIntBuffer(images.limit()); flipImages(width, height, numImages, images, flippedImages); ByteBuffer pixels = convertARGBIntBuffertoRGBAByteBuffer(width, height, flippedImages); - + if(numImages == 1) { + isEmpty = true; + for(int i = 0; i < width*height; i++) if(pixels.get(i) != 0) { + System.out.println("Encountered non-zero byte at "+i+", custom cursor is not empty!"); + isEmpty = false; + } + } for (int i = 0; i < numImages; i++) { int size = width * height; ByteBuffer image = BufferUtils.createByteBuffer(size); @@ -248,6 +256,14 @@ public class Cursor { index = ++index % cursors.length; } + /** + /* Returns wheteher the cursor image is empty or not + */ + + /*package-private*/ boolean isEmpty() { + return isEmpty; + } + /** * A single cursor element, used when animating */ @@ -266,5 +282,4 @@ public class Cursor { throw new RuntimeException("Error creating GLFW cursor"); } } - } diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/InfdevMouse.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/InfdevMouse.java new file mode 100644 index 000000000..51ad9f7c9 --- /dev/null +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/InfdevMouse.java @@ -0,0 +1,25 @@ +package org.lwjgl.input; + +import net.java.openjdk.cacio.ctc.ExternalMouseReader; +import net.java.openjdk.cacio.ctc.InfdevGrabHandler; + +public class InfdevMouse implements ExternalMouseReader, Mouse.EmptyCursorGrabListener { + static { + InfdevGrabHandler.setMouseReader(new InfdevMouse()); + } + + @Override + public int getX() { + return Mouse.getAbsoluteX(); + } + + @Override + public int getY() { + return Mouse.getAbsoluteY(); + } + + @Override + public void onGrab(boolean grabbing) { + InfdevGrabHandler.setGrabbed(grabbing); + } +} diff --git a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java index b933a3f67..2cfd05a78 100644 --- a/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java +++ b/jre_lwjgl3glfw/src/main/java/org/lwjgl/input/Mouse.java @@ -31,6 +31,7 @@ */ package org.lwjgl.input; +import java.lang.reflect.Constructor; import java.nio.ByteBuffer; import java.nio.IntBuffer; import java.security.AccessController; @@ -144,6 +145,7 @@ public class Mouse { private static boolean isGrabbed; private static InputImplementation implementation; + private static EmptyCursorGrabListener grabListener = null; /** Whether we need cursor animation emulation */ private static final boolean emulateCursorAnimation = LWJGLUtil.getPlatform() == LWJGLUtil.PLATFORM_WINDOWS || @@ -151,6 +153,16 @@ public class Mouse { private static boolean clipMouseCoordinatesToWindow = !getPrivilegedBoolean("org.lwjgl.input.Mouse.allowNegativeMouseCoords"); + static { + try { + Class infdevMouse = Class.forName("org.lwjgl.input.InfdevMouse"); + Constructor constructor = infdevMouse.getConstructor(); + grabListener = (EmptyCursorGrabListener) constructor.newInstance(); + }catch (Throwable e) { + e.printStackTrace(); + } + } + /** * Mouse cannot be constructed. */ @@ -164,7 +176,6 @@ public class Mouse { */ public static Cursor getNativeCursor() { return currentCursor; - } /** @@ -181,6 +192,14 @@ public class Mouse { */ public static Cursor setNativeCursor(Cursor cursor) throws LWJGLException { //dummy + if(cursor == null && currentCursor.isEmpty()) { + Mouse.setGrabbed(false); + if(grabListener != null) grabListener.onGrab(false); + } + if(cursor != null && cursor.isEmpty()) { + Mouse.setGrabbed(true); + if(grabListener != null) grabListener.onGrab(true); + } currentCursor = cursor; return currentCursor; } @@ -625,4 +644,18 @@ public class Mouse { public static boolean isInsideWindow() { return implementation.isInsideWindow(); } + + /* + * Package private methods to get the absolute unclipped X/Y coordiates + */ + /*package-private*/ static int getAbsoluteX() { + return absolute_x; + } + /*package-private*/ static int getAbsoluteY() { + return absolute_y; + } + + interface EmptyCursorGrabListener { + void onGrab(boolean grabbing); + } } \ No newline at end of file