mirror of
https://gitlab.com/2009scape/rt4-client.git
synced 2025-12-09 16:45:46 -07:00
Handle surface locking/unlocking on X11 (OpenGL-related)
This commit is contained in:
parent
8119ba8336
commit
3f54273220
2 changed files with 42 additions and 21 deletions
|
|
@ -125,6 +125,8 @@ public final class GlRenderer {
|
||||||
@OriginalMember(owner = "client!tf", name = "I", descriptor = "Lclient!na;")
|
@OriginalMember(owner = "client!tf", name = "I", descriptor = "Lclient!na;")
|
||||||
private static final JagString RADEON = Static28.parse("radeon");
|
private static final JagString RADEON = Static28.parse("radeon");
|
||||||
|
|
||||||
|
private static JAWTWindow window;
|
||||||
|
|
||||||
@OriginalMember(owner = "client!tf", name = "a", descriptor = "(Ljava/lang/String;)Lclient!na;")
|
@OriginalMember(owner = "client!tf", name = "a", descriptor = "(Ljava/lang/String;)Lclient!na;")
|
||||||
private static JagString method4147(@OriginalArg(0) String arg0) {
|
private static JagString method4147(@OriginalArg(0) String arg0) {
|
||||||
@Pc(3) byte[] local3;
|
@Pc(3) byte[] local3;
|
||||||
|
|
@ -322,7 +324,7 @@ public final class GlRenderer {
|
||||||
}
|
}
|
||||||
|
|
||||||
@OriginalMember(owner = "client!tf", name = "a", descriptor = "(Ljava/awt/Canvas;)V")
|
@OriginalMember(owner = "client!tf", name = "a", descriptor = "(Ljava/awt/Canvas;)V")
|
||||||
public static void method4161(@OriginalArg(0) Canvas canvas) {
|
public static void createAndDestroyContext(@OriginalArg(0) Canvas canvas) {
|
||||||
try {
|
try {
|
||||||
if (!canvas.isDisplayable()) {
|
if (!canvas.isDisplayable()) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -341,7 +343,7 @@ public final class GlRenderer {
|
||||||
glContext.release();
|
glContext.release();
|
||||||
glContext.destroy();
|
glContext.destroy();
|
||||||
glDrawable.setRealized(false);
|
glDrawable.setRealized(false);
|
||||||
} catch (@Pc(30) Throwable local30) {
|
} catch (@Pc(30) Throwable ex) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -394,10 +396,10 @@ public final class GlRenderer {
|
||||||
vendor = gl.glGetString(GL2.GL_VENDOR);
|
vendor = gl.glGetString(GL2.GL_VENDOR);
|
||||||
renderer = gl.glGetString(GL2.GL_RENDERER);
|
renderer = gl.glGetString(GL2.GL_RENDERER);
|
||||||
@Pc(12) String vendor = GlRenderer.vendor.toLowerCase();
|
@Pc(12) String vendor = GlRenderer.vendor.toLowerCase();
|
||||||
if (vendor.indexOf("microsoft") != -1) {
|
if (vendor.contains("microsoft")) {
|
||||||
result = 1;
|
result = 1;
|
||||||
}
|
}
|
||||||
if (vendor.indexOf("brian paul") != -1 || vendor.indexOf("mesa") != -1) {
|
if (vendor.contains("brian paul") || vendor.contains("mesa")) {
|
||||||
result |= 0x1;
|
result |= 0x1;
|
||||||
}
|
}
|
||||||
@Pc(39) String version = gl.glGetString(GL2.GL_VERSION);
|
@Pc(39) String version = gl.glGetString(GL2.GL_VERSION);
|
||||||
|
|
@ -483,8 +485,13 @@ public final class GlRenderer {
|
||||||
Static172.quit(); // MaterialManager
|
Static172.quit(); // MaterialManager
|
||||||
} catch (@Pc(5) Throwable local5) {
|
} catch (@Pc(5) Throwable local5) {
|
||||||
}
|
}
|
||||||
gl = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (window != null) {
|
||||||
|
if (!window.getLock().isLocked()) {
|
||||||
|
window.lockSurface();
|
||||||
|
}
|
||||||
|
|
||||||
if (context != null) {
|
if (context != null) {
|
||||||
Static63.clear(); // GlCleaner
|
Static63.clear(); // GlCleaner
|
||||||
try {
|
try {
|
||||||
|
|
@ -497,15 +504,19 @@ public final class GlRenderer {
|
||||||
context.destroy();
|
context.destroy();
|
||||||
} catch (@Pc(21) Throwable ex) {
|
} catch (@Pc(21) Throwable ex) {
|
||||||
}
|
}
|
||||||
context = null;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (drawable != null) {
|
if (drawable != null) {
|
||||||
try {
|
try {
|
||||||
drawable.setRealized(false);
|
drawable.setRealized(false);
|
||||||
} catch (@Pc(30) Throwable ex) {
|
} catch (@Pc(30) Throwable ex) {
|
||||||
}
|
}
|
||||||
drawable = null;
|
|
||||||
}
|
}
|
||||||
|
window = null;
|
||||||
|
gl = null;
|
||||||
|
context = null;
|
||||||
|
drawable = null;
|
||||||
Static120.method2398(); // LightingManager
|
Static120.method2398(); // LightingManager
|
||||||
enabled = false;
|
enabled = false;
|
||||||
}
|
}
|
||||||
|
|
@ -659,9 +670,16 @@ public final class GlRenderer {
|
||||||
}
|
}
|
||||||
@Pc(18) GLDrawableFactory factory = GLDrawableFactory.getFactory(profile);
|
@Pc(18) GLDrawableFactory factory = GLDrawableFactory.getFactory(profile);
|
||||||
AWTGraphicsConfiguration config = AWTGraphicsConfiguration.create(canvas.getGraphicsConfiguration(), capabilities, capabilities);
|
AWTGraphicsConfiguration config = AWTGraphicsConfiguration.create(canvas.getGraphicsConfiguration(), capabilities, capabilities);
|
||||||
JAWTWindow window = NewtFactoryAWT.getNativeWindow(canvas, config);
|
window = NewtFactoryAWT.getNativeWindow(canvas, config);
|
||||||
|
if (!window.getLock().isLocked()) {
|
||||||
|
window.lockSurface();
|
||||||
|
}
|
||||||
|
try {
|
||||||
drawable = factory.createGLDrawable(window);
|
drawable = factory.createGLDrawable(window);
|
||||||
drawable.setRealized(true);
|
drawable.setRealized(true);
|
||||||
|
} finally {
|
||||||
|
window.unlockSurface();
|
||||||
|
}
|
||||||
@Pc(29) int swapBuffersAttempts = 0;
|
@Pc(29) int swapBuffersAttempts = 0;
|
||||||
@Pc(36) int result;
|
@Pc(36) int result;
|
||||||
while (true) {
|
while (true) {
|
||||||
|
|
@ -678,6 +696,9 @@ public final class GlRenderer {
|
||||||
}
|
}
|
||||||
Static231.sleep(1000L);
|
Static231.sleep(1000L);
|
||||||
}
|
}
|
||||||
|
if (window.getLock().isLocked()) {
|
||||||
|
window.unlockSurface();
|
||||||
|
}
|
||||||
gl = GLContext.getCurrentGL().getGL2();
|
gl = GLContext.getCurrentGL().getGL2();
|
||||||
new GLUgl2es1();
|
new GLUgl2es1();
|
||||||
enabled = true;
|
enabled = true;
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ public final class Static197 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (arg1 == 0 && arg3 > 0) {
|
if (arg1 == 0 && arg3 > 0) {
|
||||||
GlRenderer.method4161(Static154.canvas);
|
GlRenderer.createAndDestroyContext(Static154.canvas);
|
||||||
}
|
}
|
||||||
if (arg2 && arg1 > 0) {
|
if (arg2 && arg1 > 0) {
|
||||||
Static154.canvas.setIgnoreRepaint(true);
|
Static154.canvas.setIgnoreRepaint(true);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue