From 4f2406a1d9bc502467e1f6f24538fd8a70fdce65 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Mon, 28 Sep 2009 14:18:45 +1000 Subject: [PATCH] ephyr: if -parent is given, check for a trailing -screen. (#24144) If -parent is given, don't open up a new window if -screen is given as well. The commandline option -screen allows to set the depth of the embedded Xephry instance, even though width and height are autoscaled on -parent. This patch checks for a -screen parameter after -parent and - if one is found - delays initializing the screen. The parent window id is stored temporarily but re-set after a -screen argument. The following command is thus valid: Xephyr -parent 1234 -screen 640x480@8 -screen 1024x768 It embeds the first 8-bit screen into window 1234 and opens up a new window for the second screen. X.Org Bug 24144 Signed-off-by: Peter Hutterer --- hw/kdrive/ephyr/ephyrinit.c | 16 +++++++++++++++- 1 files changed, 15 insertions(+), 1 deletions(-) diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c index 22152ff..eecad7e 100644 --- a/hw/kdrive/ephyr/ephyrinit.c +++ b/hw/kdrive/ephyr/ephyrinit.c @@ -148,6 +148,7 @@ processScreenArg (char *screen_size, char *parent_id) int ddxProcessArgument (int argc, char **argv, int i) { + static char* parent = NULL; EPHYR_DBG("mark argv[%d]='%s'", i, argv[i] ); if (i == 1) @@ -159,6 +160,18 @@ ddxProcessArgument (int argc, char **argv, int i) { if(i+1 < argc) { + int j; + /* If parent is specified and a screen argument follows, don't do + * anything, let the -screen handling init the rest */ + for (j = i; j < argc; j++) + { + if (!strcmp(argv[j], "-screen")) + { + parent = argv[i + 1]; + return 2; + } + } + processScreenArg ("100x100", argv[i+1]); return 2; } @@ -170,7 +183,8 @@ ddxProcessArgument (int argc, char **argv, int i) { if ((i+1) < argc) { - processScreenArg (argv[i+1], NULL); + processScreenArg (argv[i+1], parent); + parent = NULL; return 2; } -- 1.6.3.rc1.2.g0164.dirty