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>
This commit is contained in:
parent
efacd7bfd0
commit
19be992d9d
|
@ -46,6 +46,11 @@ sets the screen size.
|
||||||
.BI -parent " id"
|
.BI -parent " id"
|
||||||
uses exiting window
|
uses exiting window
|
||||||
.I id .
|
.I id .
|
||||||
|
If a
|
||||||
|
.BI -screen
|
||||||
|
argument follows a
|
||||||
|
.BI -parent
|
||||||
|
argument, this screen is embedded into the given window.
|
||||||
.TP 8
|
.TP 8
|
||||||
.B -host-cursor
|
.B -host-cursor
|
||||||
set 'cursor acceleration':
|
set 'cursor acceleration':
|
||||||
|
|
|
@ -148,6 +148,7 @@ processScreenArg (char *screen_size, char *parent_id)
|
||||||
int
|
int
|
||||||
ddxProcessArgument (int argc, char **argv, int i)
|
ddxProcessArgument (int argc, char **argv, int i)
|
||||||
{
|
{
|
||||||
|
static char* parent = NULL;
|
||||||
EPHYR_DBG("mark argv[%d]='%s'", i, argv[i] );
|
EPHYR_DBG("mark argv[%d]='%s'", i, argv[i] );
|
||||||
|
|
||||||
if (i == 1)
|
if (i == 1)
|
||||||
|
@ -159,6 +160,18 @@ ddxProcessArgument (int argc, char **argv, int i)
|
||||||
{
|
{
|
||||||
if(i+1 < argc)
|
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]);
|
processScreenArg ("100x100", argv[i+1]);
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
@ -170,7 +183,8 @@ ddxProcessArgument (int argc, char **argv, int i)
|
||||||
{
|
{
|
||||||
if ((i+1) < argc)
|
if ((i+1) < argc)
|
||||||
{
|
{
|
||||||
processScreenArg (argv[i+1], NULL);
|
processScreenArg (argv[i+1], parent);
|
||||||
|
parent = NULL;
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue