Index: /trunk/include/VBox/VBoxGuest.h
===================================================================
--- /trunk/include/VBox/VBoxGuest.h	(revision 6848)
+++ /trunk/include/VBox/VBoxGuest.h	(revision 6849)
@@ -1428,6 +1428,6 @@
 /** @name Display
  * @{ */
-VBGLR3DECL(int)     VbglR3GetDisplayChangeRequest(uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits,
-                                                  uint32_t fEventAck, uint32_t iDisplay);
+VBGLR3DECL(int)     VbglR3GetLastDisplayChangeRequest(uint32_t *pcx, uint32_t *pcy,
+                                                      uint32_t *pcBits,uint32_t *piDisplay);
 VBGLR3DECL(int)     VbglR3DisplayChangeWaitEvent(uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits,
                                                  uint32_t *piDisplay);
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp	(revision 6848)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp	(revision 6849)
@@ -119,21 +119,19 @@
  * @param   pcy         Where to store the vertical pixel resolution (0 = do not change).
  * @param   pcBits      Where to store the bits per pixel (0 = do not change).
- * @param   fEventAck   Flag that the request is an acknowlegement for the
- *                      VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST.
- *                      Values:
- *                          0                                   - just querying,
- *                          VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST - event acknowledged.
- * @param   iDisplay    0 for primary display, 1 for the first secondary, etc.
- */
-VBGLR3DECL(int) VbglR3GetDisplayChangeRequest(uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits,
-                                              uint32_t fEventAck, uint32_t iDisplay)
-{
-    VMMDevDisplayChangeRequest2 Req;
-    vmmdevInitRequest(&Req.header, VMMDevReq_GetDisplayChangeRequest2);
-    Req.xres = 0;
-    Req.yres = 0;
-    Req.bpp = 0;
-    Req.eventAck = fEventAck;
-    Req.display = iDisplay;
+ * @param   iDisplay    Where to store the display number the request was for - 0 for the
+ *                      primary display, 1 for the first secondary, etc.
+ */
+VBGLR3DECL(int) VbglR3GetLastDisplayChangeRequest(uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits,
+                                                 uint32_t *piDisplay)
+{
+    VMMDevDisplayChangeRequest2 Req = { { 0 } };
+
+#ifndef VBOX_VBGLR3_XFREE86
+    AssertPtrReturn(pcx, VERR_INVALID_PARAMETER);
+    AssertPtrReturn(pcy, VERR_INVALID_PARAMETER);
+    AssertPtrReturn(pcBits, VERR_INVALID_PARAMETER);
+    AssertPtrReturn(piDisplay, VERR_INVALID_PARAMETER);
+#endif
+vmmdevInitRequest(&Req.header, VMMDevReq_GetDisplayChangeRequest2);
     int rc = vbglR3GRPerform(&Req.header);
     if (RT_SUCCESS(rc))
@@ -144,4 +142,5 @@
         *pcy = Req.yres;
         *pcBits = Req.bpp;
+        *piDisplay = Req.display;
     }
     return rc;
Index: /trunk/src/VBox/Additions/x11/xgraphics/vboxutils-new.c
===================================================================
--- /trunk/src/VBox/Additions/x11/xgraphics/vboxutils-new.c	(revision 6848)
+++ /trunk/src/VBox/Additions/x11/xgraphics/vboxutils-new.c	(revision 6849)
@@ -823,16 +823,12 @@
  * @param   pcy         Where to store the vertical pixel resolution (0 = do not change).
  * @param   pcBits      Where to store the bits per pixel (0 = do not change).
- * @param   fEventAck   Flag that the request is an acknowlegement for the
- *                      VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST.
- *                      Values:
- *                          0                                   - just querying,
- *                          VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST - event acknowledged.
- * @param   iDisplay    0 for primary display, 1 for the first secondary, etc.
+ * @param   iDisplay    Where to store the display number the request was for - 0 for the
+ *                      primary display, 1 for the first secondary, etc.
  */
 Bool
 vboxGetDisplayChangeRequest(ScrnInfoPtr pScrn, uint32_t *pcx, uint32_t *pcy,
-                            uint32_t *pcBits, uint32_t fEventAck, uint32_t iDisplay)
-{
-    int rc = VbglR3GetDisplayChangeRequest(pcx, pcy, pcBits, fEventAck, iDisplay);
+                            uint32_t *pcBits, uint32_t *piDisplay)
+{
+    int rc = VbglR3GetLastDisplayChangeRequest(pcx, pcy, pcBits, piDisplay);
     if (RT_SUCCESS(rc))
         return TRUE;
Index: /trunk/src/VBox/Additions/x11/xgraphics/vboxutils.c
===================================================================
--- /trunk/src/VBox/Additions/x11/xgraphics/vboxutils.c	(revision 6848)
+++ /trunk/src/VBox/Additions/x11/xgraphics/vboxutils.c	(revision 6849)
@@ -960,28 +960,22 @@
  *
  * @returns iprt status value
- * @retval xres     horizontal pixel resolution (0 = do not change)
- * @retval yres     vertical pixel resolution (0 = do not change)
- * @retval bpp      bits per pixel (0 = do not change)
- * @param  eventAck Flag that the request is an acknowlegement for the
- *                  VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST.
- *                  Values:
- *                      0                                   - just querying,
- *                      VMMDEV_EVENT_DISPLAY_CHANGE_REQUEST - event acknowledged.
- * @param  display  0 for primary display, 1 for the first secondary, etc.
+ * @param xres     where to store the horizontal pixel resolution requested
+ *                 (0 = do not change)
+ * @param yres     where to store the vertical pixel resolution requested
+ *                 (0 = do not change)
+ * @param bpp      where to store the bits per pixel requeste
+ *                 (0 = do not change)
+ * @param  display Where to store the display number the request was for -
+ *                 0 for the primary display, 1 for the first secondary, etc.
  */
 Bool
 vboxGetDisplayChangeRequest(ScrnInfoPtr pScrn, uint32_t *px, uint32_t *py,
-                            uint32_t *pbpp, uint32_t eventAck, uint32_t display)
+                            uint32_t *pbpp, uint32_t *display)
 {
     int rc, scrnIndex = pScrn->scrnIndex;
     VBOXPtr pVBox = pScrn->driverPrivate;
 
-    VMMDevDisplayChangeRequest2 Req;
+    VMMDevDisplayChangeRequest2 Req = { { 0 } };
     vmmdevInitRequest(&Req.header, VMMDevReq_GetDisplayChangeRequest2);
-    Req.xres = 0;
-    Req.yres = 0;
-    Req.bpp = 0;
-    Req.eventAck = eventAck;
-    Req.display = display;
     rc = vbox_vmmcall(pScrn, pVBox, &Req.header);
     if (RT_SUCCESS(rc))
@@ -990,4 +984,5 @@
         *py = Req.yres;
         *pbpp = Req.bpp;
+        *display = Req.display;
         return TRUE;
     }
Index: /trunk/src/VBox/Additions/x11/xgraphics/vboxvideo.h
===================================================================
--- /trunk/src/VBox/Additions/x11/xgraphics/vboxvideo.h	(revision 6848)
+++ /trunk/src/VBox/Additions/x11/xgraphics/vboxvideo.h	(revision 6849)
@@ -191,6 +191,7 @@
 extern Bool vboxDisableVbva(ScrnInfoPtr pScrn);
 
-extern Bool vboxGetDisplayChangeRequest(ScrnInfoPtr pScrn, uint32_t *pcx, uint32_t *pcy,
-                            uint32_t *pcBits, uint32_t fEventAck, uint32_t iDisplay);
+extern Bool vboxGetDisplayChangeRequest(ScrnInfoPtr pScrn, uint32_t *pcx,
+                                        uint32_t *pcy, uint32_t *pcBits,
+                                        uint32_t *piDisplay);
 
 #endif /* _VBOXVIDEO_H_ */
Index: /trunk/src/VBox/Additions/x11/xgraphics/vboxvideo_13.c
===================================================================
--- /trunk/src/VBox/Additions/x11/xgraphics/vboxvideo_13.c	(revision 6848)
+++ /trunk/src/VBox/Additions/x11/xgraphics/vboxvideo_13.c	(revision 6849)
@@ -398,5 +398,5 @@
 vbox_output_get_modes (xf86OutputPtr output)
 {
-    uint32_t x, y, bpp;
+    uint32_t x, y, bpp, display;
     bool rc;
     DisplayModePtr pModes = NULL;
@@ -404,15 +404,12 @@
 
     TRACE;
-    rc = vboxGetDisplayChangeRequest(pScrn, &x, &y, &bpp, 0, 0);
+    rc = vboxGetDisplayChangeRequest(pScrn, &x, &y, &bpp, &display);
+    /* @todo - check the display number once we support multiple displays. */
     if (rc && (0 != x) && (0 != y)) {
         vbox_output_add_mode(&pModes, NULL, x, y, TRUE);
-        vbox_output_add_mode(&pModes, "1024x768", 1024, 768, FALSE);
-        vbox_output_add_mode(&pModes, "800x600", 800, 600, FALSE);
-        vbox_output_add_mode(&pModes, "640x480", 640, 480, FALSE);
-    } else {
-        vbox_output_add_mode(&pModes, "1024x768", 1024, 768, FALSE);
-        vbox_output_add_mode(&pModes, "800x600", 800, 600, FALSE);
-        vbox_output_add_mode(&pModes, "640x480", 640, 480, FALSE);
-    }
+    }
+    vbox_output_add_mode(&pModes, "1024x768", 1024, 768, FALSE);
+    vbox_output_add_mode(&pModes, "800x600", 800, 600, FALSE);
+    vbox_output_add_mode(&pModes, "640x480", 640, 480, FALSE);
     TRACE2;
     return pModes;
