diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2009-09-28 14:18:45 +1000 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2009-10-11 21:21:42 -0700 |
commit | 7f2f71da5125ae01a8279a4886090a711100d671 (patch) | |
tree | e6e89932474c2282f600da0a34091fb710f1d6ed | |
parent | c07b2368a7dedb66455eea313c06859afa2e1a9c (diff) |
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. Multiple parent arguments are possible, the screens
are embedded in-order.
X.Org Bug 24144 <http://bugs.freedesktop.org/show_bug.cgi?id=24144>
Tested-by: Vic Lee
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
(cherry picked from commit 19be992d9dc542b61fa3f4fd32a09071c9e64880)
Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r-- | hw/kdrive/ephyr/Xephyr.man.pre | 5 | ||||
-rw-r--r-- | hw/kdrive/ephyr/ephyrinit.c | 16 |
2 files changed, 20 insertions, 1 deletions
diff --git a/hw/kdrive/ephyr/Xephyr.man.pre b/hw/kdrive/ephyr/Xephyr.man.pre index 7f0e811a2..34a2971b2 100644 --- a/hw/kdrive/ephyr/Xephyr.man.pre +++ b/hw/kdrive/ephyr/Xephyr.man.pre @@ -46,6 +46,11 @@ sets the screen size. .BI -parent " id" uses exiting window .I id . +If a +.BI -screen +argument follows a +.BI -parent +argument, this screen is embedded into the given window. .TP 8 .B -host-cursor set 'cursor acceleration': diff --git a/hw/kdrive/ephyr/ephyrinit.c b/hw/kdrive/ephyr/ephyrinit.c index 1399d7aaa..d20f9b662 100644 --- a/hw/kdrive/ephyr/ephyrinit.c +++ b/hw/kdrive/ephyr/ephyrinit.c @@ -147,6 +147,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) @@ -158,6 +159,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; } @@ -169,7 +182,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; } |