xserver: Branch 'master'

Adam Jackson ajax at kemper.freedesktop.org
Mon Nov 26 08:54:12 PST 2007


 hw/xfree86/common/xf86Config.c |   12 ++++++++++++
 hw/xfree86/parser/Screen.c     |   13 +++++++++++++
 hw/xfree86/parser/xf86Parser.h |    1 +
 3 files changed, 26 insertions(+)

New commits:
commit a344920ae86c1970e4cc34ee91e2f2008d490c49
Author: Adam Jackson <ajax at redhat.com>
Date:   Mon Nov 26 11:53:08 2007 -0500

    Allow Virtual to be specified globally in the Screen section.
    
    The Display subsections are optional, and it's confusing to need to create
    them just to set a Virtual size.

diff --git a/hw/xfree86/common/xf86Config.c b/hw/xfree86/common/xf86Config.c
index f58e2a7..622c318 100644
--- a/hw/xfree86/common/xf86Config.c
+++ b/hw/xfree86/common/xf86Config.c
@@ -1958,6 +1958,18 @@ configScreen(confScreenPtr screenp, XF86ConfScreenPtr conf_screen, int scrnum,
     }
     screenp->displays   = xnfalloc((count) * sizeof(DispRec));
     screenp->numdisplays = count;
+    
+    /* Fill in the default Virtual size, if any */
+    if (conf_screen->scrn_virtualX && conf_screen->scrn_virtualY) {
+	for (count = 0, dispptr = conf_screen->scrn_display_lst;
+	     dispptr;
+	     dispptr = (XF86ConfDisplayPtr)dispptr->list.next, count++) {
+	    screenp->displays[count].virtualX = conf_screen->scrn_virtualX;
+	    screenp->displays[count].virtualY = conf_screen->scrn_virtualY;
+	}
+    }
+
+    /* Now do the per-Display Virtual sizes */
     count = 0;
     dispptr = conf_screen->scrn_display_lst;
     while(dispptr) {
diff --git a/hw/xfree86/parser/Screen.c b/hw/xfree86/parser/Screen.c
index 4524f17..ad08c13 100644
--- a/hw/xfree86/parser/Screen.c
+++ b/hw/xfree86/parser/Screen.c
@@ -214,6 +214,7 @@ static xf86ConfigSymTabRec ScreenTab[] =
 	{DEFAULTDEPTH, "defaultdepth"},
 	{DEFAULTBPP, "defaultbpp"},
 	{DEFAULTFBBPP, "defaultfbbpp"},
+	{VIRTUAL, "virtual"},
 	{OPTION, "option"},
 	{-1, ""},
 };
@@ -299,6 +300,14 @@ xf86parseScreenSection (void)
 				}
 			}
 			break;
+		case VIRTUAL:
+			if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
+				Error (VIRTUAL_MSG, NULL);
+			ptr->scrn_virtualX = val.num;
+			if (xf86getSubToken (&(ptr->scrn_comment)) != NUMBER)
+				Error (VIRTUAL_MSG, NULL);
+			ptr->scrn_virtualY = val.num;
+			break;
 		case OPTION:
 			ptr->scrn_option_lst = xf86parseOption(ptr->scrn_option_lst);
 			break;
@@ -364,6 +373,10 @@ xf86printScreenSection (FILE * cf, XF86ConfScreenPtr ptr)
 		{
 			fprintf (cf, "\tVideoAdaptor \"%s\"\n", aptr->al_adaptor_str);
 		}
+		if (ptr->scrn_virtualX && ptr->scrn_virtualY)
+			fprintf (cf, "\tVirtual     %d %d\n",
+				 ptr->scrn_virtualX,
+				 ptr->scrn_virtualY);
 		for (dptr = ptr->scrn_display_lst; dptr; dptr = dptr->list.next)
 		{
 			fprintf (cf, "\tSubSection \"Display\"\n");
diff --git a/hw/xfree86/parser/xf86Parser.h b/hw/xfree86/parser/xf86Parser.h
index a078361..fd6cc53 100644
--- a/hw/xfree86/parser/xf86Parser.h
+++ b/hw/xfree86/parser/xf86Parser.h
@@ -307,6 +307,7 @@ typedef struct
 	XF86ConfDisplayPtr scrn_display_lst;
 	XF86OptionPtr scrn_option_lst;
 	char *scrn_comment;
+	int scrn_virtualX, scrn_virtualY;
 }
 XF86ConfScreenRec, *XF86ConfScreenPtr;
 


More information about the xorg-commit mailing list