diff --git a/app/src/main/java/com/winlator/xserver/ClientOpcodes.java b/app/src/main/java/com/winlator/xserver/ClientOpcodes.java index ff8e7948b5..ba3afc6d6c 100644 --- a/app/src/main/java/com/winlator/xserver/ClientOpcodes.java +++ b/app/src/main/java/com/winlator/xserver/ClientOpcodes.java @@ -31,6 +31,7 @@ public abstract class ClientOpcodes { public static final byte FREE_PIXMAP = 54; public static final byte CREATE_GC = 55; public static final byte CHANGE_GC = 56; + public static final byte SET_DASHES = 58; public static final byte SET_CLIP_RECTANGLES = 59; public static final byte FREE_GC = 60; public static final byte COPY_AREA = 62; diff --git a/app/src/main/java/com/winlator/xserver/Drawable.java b/app/src/main/java/com/winlator/xserver/Drawable.java index e7ad8ff8ec..1dd73aed30 100644 --- a/app/src/main/java/com/winlator/xserver/Drawable.java +++ b/app/src/main/java/com/winlator/xserver/Drawable.java @@ -120,13 +120,15 @@ public void copyArea(short srcX, short srcY, short dstX, short dstY, short width if ((dstX + width) > this.width) width = (short)(this.width - dstX); if ((dstY + height) > this.height) height = (short)(this.height - dstY); - if (gcFunction == GraphicsContext.Function.COPY) { - copyArea(srcX, srcY, dstX, dstY, width, height, drawable.getStride(), this.getStride(), drawable.data, this.data); + if (this.data != null && drawable.data != null) { + if (gcFunction == GraphicsContext.Function.COPY) { + copyArea(srcX, srcY, dstX, dstY, width, height, drawable.getStride(), this.getStride(), drawable.data, this.data); + } + else copyAreaOp(srcX, srcY, dstX, dstY, width, height, drawable.getStride(), this.getStride(), drawable.data, this.data, gcFunction.ordinal()); + + this.data.rewind(); + drawable.data.rewind(); } - else copyAreaOp(srcX, srcY, dstX, dstY, width, height, drawable.getStride(), this.getStride(), drawable.data, this.data, gcFunction.ordinal()); - - this.data.rewind(); - drawable.data.rewind(); texture.setNeedsUpdate(true); if (onDrawListener != null) onDrawListener.run(); diff --git a/app/src/main/java/com/winlator/xserver/XClientRequestHandler.java b/app/src/main/java/com/winlator/xserver/XClientRequestHandler.java index a9aa50d9dd..aa2c1c353c 100644 --- a/app/src/main/java/com/winlator/xserver/XClientRequestHandler.java +++ b/app/src/main/java/com/winlator/xserver/XClientRequestHandler.java @@ -312,6 +312,9 @@ else if (inputStream.available() < 4) { GraphicsContextRequests.changeGC(client, inputStream, outputStream); } break; + case ClientOpcodes.SET_DASHES: + client.skipRequest(); + break; case ClientOpcodes.SET_CLIP_RECTANGLES: client.skipRequest(); break;