[PATCH v4 RESEND SIGNED 1/3] kdrive: add support to +X+Y syntax in -screen option parsing
walter harms
wharms at bfs.de
Mon Aug 18 04:56:40 PDT 2014
Nice add-on
general question:
but is there any documentation that should be fix also ?
re,
wh
Am 18.08.2014 13:45, schrieb Laércio de Sousa:
> This patch enhances current -screen option parsing for kdrive-based
> applications. It can parse strings like
> <WIDTH>x<HEIGHT>+<XOFFSET>+<YOFFSET>, storing X and Y offsets
> in KdScreenInfo instances.
>
> For negative values, this patch supports +-X+-Y (not -X-Y) syntax.
>
> It will allow e.g. proper Xephyr window placement for multiseat
> purposes.
>
> Signed-off-by: Laércio de Sousa <laerciosousa at sme-mogidascruzes.sp.gov.br>
> ---
> hw/kdrive/src/kdrive.c | 23 +++++++++++++++++++----
> hw/kdrive/src/kdrive.h | 2 ++
> 2 files changed, 21 insertions(+), 4 deletions(-)
>
> diff --git a/hw/kdrive/src/kdrive.c b/hw/kdrive/src/kdrive.c
> index b5b91c0..5dbff3f 100644
> --- a/hw/kdrive/src/kdrive.c
> +++ b/hw/kdrive/src/kdrive.c
> @@ -300,6 +300,8 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
> screen->softCursor = kdSoftCursor;
> screen->origin = kdOrigin;
> screen->randr = RR_Rotate_0;
> + screen->x = 0;
> + screen->y = 0;
> screen->width = 0;
> screen->height = 0;
> screen->width_mm = 0;
> @@ -313,7 +315,7 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
> return;
>
> for (i = 0; i < 2; i++) {
> - arg = KdParseFindNext(arg, "x/@XY", save, &delim);
> + arg = KdParseFindNext(arg, "x/+ at XY", save, &delim);
> if (!save[0])
> return;
>
> @@ -321,7 +323,7 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
> mm = 0;
>
> if (delim == '/') {
> - arg = KdParseFindNext(arg, "x at XY", save, &delim);
> + arg = KdParseFindNext(arg, "x+ at XY", save, &delim);
> if (!save[0])
> return;
> mm = atoi(save);
> @@ -335,7 +337,8 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
> screen->height = pixels;
> screen->height_mm = mm;
> }
> - if (delim != 'x' && delim != '@' && delim != 'X' && delim != 'Y' &&
> + if (delim != 'x' && delim != '+' && delim != '@' &&
> + delim != 'X' && delim != 'Y' &&
> (delim != '\0' || i == 0))
> return;
> }
> @@ -346,6 +349,18 @@ KdParseScreen(KdScreenInfo * screen, const char *arg)
> kdSoftCursor = FALSE;
> kdSubpixelOrder = SubPixelUnknown;
>
> + if (delim == '+') {
> + arg = KdParseFindNext(arg, "+ at xXY", save, &delim);
> + if (save[0])
> + screen->x = atoi(save);
> + }
> +
> + if (delim == '+') {
> + arg = KdParseFindNext(arg, "@xXY", save, &delim);
> + if (save[0])
> + screen->y = atoi(save);
> + }
> +
> if (delim == '@') {
> arg = KdParseFindNext(arg, "xXY", save, &delim);
> if (save[0]) {
> @@ -425,7 +440,7 @@ KdUseMsg(void)
> {
> ErrorF("\nTinyX Device Dependent Usage:\n");
> ErrorF
> - ("-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM][@ROTATION][X][Y][xDEPTH/BPP[xFREQ]] Specify screen characteristics\n");
> + ("-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM][+[-]XOFFSET][+[-]YOFFSET][@ROTATION][X][Y][xDEPTH/BPP[xFREQ]] Specify screen characteristics\n");
> ErrorF
> ("-rgba rgb/bgr/vrgb/vbgr/none Specify subpixel ordering for LCD panels\n");
> ErrorF
> diff --git a/hw/kdrive/src/kdrive.h b/hw/kdrive/src/kdrive.h
> index 08b1681..066a134 100644
> --- a/hw/kdrive/src/kdrive.h
> +++ b/hw/kdrive/src/kdrive.h
> @@ -89,6 +89,8 @@ typedef struct _KdScreenInfo {
> ScreenPtr pScreen;
> void *driver;
> Rotation randr; /* rotation and reflection */
> + int x;
> + int y;
> int width;
> int height;
> int rate;
More information about the xorg-devel
mailing list