X-Git-Url: http://git.nikiroo.be/?a=blobdiff_plain;f=src%2Fjexer%2Fio%2FScreen.java;h=1ecc4b185e0ee1eb8352211882c55bb39003d27b;hb=e7083f0b935964ca5a04835187397ff117941044;hp=81dabd246a8f607a4c87994c70a65880482eda0a;hpb=87a17f3ca4b2602c396afdbb13cccb4c1e7cbd38;p=fanfix.git diff --git a/src/jexer/io/Screen.java b/src/jexer/io/Screen.java index 81dabd2..1ecc4b1 100644 --- a/src/jexer/io/Screen.java +++ b/src/jexer/io/Screen.java @@ -183,7 +183,17 @@ public abstract class Screen { /** * When true, logical != physical. */ - protected boolean dirty; + protected volatile boolean dirty; + + /** + * Get dirty flag. + * + * @return if true, the logical screen is not in sync with the physical + * screen + */ + public final boolean isDirty() { + return dirty; + } /** * Set if the user explicitly wants to redraw everything starting with a @@ -215,7 +225,6 @@ public abstract class Screen { * @return attributes at (x, y) */ public final CellAttributes getAttrXY(final int x, final int y) { - CellAttributes attr = new CellAttributes(); if ((x >= 0) && (x < width) && (y >= 0) && (y < height)) { attr.setTo(logical[x][y]); @@ -581,12 +590,24 @@ public abstract class Screen { } /** - * Force the screen to be fully cleared and redrawn on the next flush(). + * Clear the logical screen. */ public final void clear() { reset(); } + /** + * Clear the physical screen. + */ + public final void clearPhysical() { + dirty = true; + for (int row = 0; row < height; row++) { + for (int col = 0; col < width; col++) { + physical[col][row].reset(); + } + } + } + /** * Draw a box with a border and empty background. *