ddxProcessArgument() is a misname here. It should just *get* command line args, parse them, without start in fact the actual *processing* and execution. A reasonable place to processing is inside InitOutput(), when mostly common structure is already initialized.
This patch follow the behaviour mentioned, processing command line arguments only after, in InitOutput() Signed-off-by: Tiago Vignatti <[email protected]> --- I need this commit to make MAXSCREENS in run time work properly. So I'm kindly requesting for reviewers :) hw/vfb/InitOutput.c | 29 ++++++++++++++--------------- 1 files changed, 14 insertions(+), 15 deletions(-) diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c index 4e82aee..e15de33 100644 --- a/hw/vfb/InitOutput.c +++ b/hw/vfb/InitOutput.c @@ -305,8 +305,6 @@ vfbGetScreen(char *argv[], int i) FatalError("Invalid screen configuration %s for -screen %d\n", argv[i+2], vfbScreenNum); } - - vfbProcessScreen(); return 3; } @@ -328,7 +326,6 @@ vfbGetPixdepths(int argc, char *argv[], int i) FatalError("Invalid pixmap depth %d passed to -pixdepths\n", vfbPixdepth); } - vfbProcessPixdepths(); return 2; } return 1; @@ -355,7 +352,6 @@ static int vfbGetBlackpixel(char *argv[], int i) { vfbBlackpix = atoi(argv[++i]); - vfbProcessBlackpixel(); return 2; } @@ -380,7 +376,6 @@ static int vfbGetWhitepixel(char *argv[], int i) { vfbWhitePix = atoi(argv[++i]); - vfbProcessWhitepixel(); return 2; } @@ -405,22 +400,12 @@ static int vfbGetLinebias(char *argv[], int i) { vfbLinebias = atoi(argv[++i]); - vfbProcessLinebias(); return 2; } int ddxProcessArgument(int argc, char *argv[], int i) { - static Bool firstTime = TRUE; - - if (firstTime) - { - vfbInitializeDefaultScreens(); - vfbInitializePixmapDepths(); - firstTime = FALSE; - } - #define CHECK_FOR_REQUIRED_ARGUMENTS(num) \ if (((i + num) >= argc) || (!argv[i + num])) { \ ErrorF("Required argument to %s not specified\n", argv[i]); \ @@ -1014,6 +999,20 @@ InitOutput(ScreenInfo *screenInfo, int argc, char **argv) { int i; int NumFormats = 0; + static Bool firstTime = TRUE; + + vfbProcessScreen(); + vfbProcessPixdepths(); + vfbProcessBlackpixel(); + vfbProcessWhitepixel(); + vfbProcessLinebias(); + + if (firstTime) + { + vfbInitializeDefaultScreens(); + vfbInitializePixmapDepths(); + firstTime = FALSE; + } /* initialize pixmap formats */ -- 1.6.0.4 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
