private void setReqChar (int x, int y, char c, CharProps p) {
        if (y>=0 && y<currentScreenSizeY && x >=0 && x <currentScreenSizeX) {
            ScreenCharacter req = requestedScreen[y][x];
            if (!ScreenCharacter.safeEquals(req, c, p)) {
                // different from requested...
                ScreenCharacter cur = currentScreen[y][x];
                if (!ScreenCharacter.safeEquals(cur, c, p)) {
                    // ...and different from current
                    requestedScreen[y][x] = SPACE.equals(c, p) ? null : new ScreenCharacter(c, p);
                    dirtyChars[y][x]      = true;
                    dirtyLine[y]          = true;
                    dirtyLowChar[y]       = Math.min(dirtyLowChar[y], x);
                    dirtyHighChar[y]      = Math.max(dirtyHighChar[y], x);
                    dirtyLowLine          = Math.min(dirtyLowLine, y   );
                    dirtyHighLine         = Math.max(dirtyHighLine, y   );
                    dirtySomething        = true;
                }else {
                    // ...back to currently displayed char:
                    requestedScreen[y][x] = cur;
                    dirtyChars[y][x]      = false;
                }
            }
        }
    }