Changeset 35207 in vbox for trunk/src/VBox/Additions/x11
- Timestamp:
- Dec 16, 2010 9:59:30 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 69048
- Location:
- trunk/src/VBox/Additions/x11/vboxvideo
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c
r35125 r35207 346 346 TRACE_ENTRY(); 347 347 348 if (!pVBox->useDevice)349 return FALSE;350 348 pVBox->fHaveHGSMI = vboxInitVbva(pScrn->scrnIndex, pScreen, pVBox); 351 return TRUE;349 return pVBox->fHaveHGSMI; 352 350 } 353 351 … … 1062 1060 * The return type is void as we guarantee we will return some mode. 1063 1061 */ 1064 void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t *pcx,1062 void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t iScreen, uint32_t *pcx, 1065 1063 uint32_t *pcy, uint32_t *pcBits) 1066 1064 { 1067 1065 /* Query the host for the preferred resolution and colour depth */ 1068 uint32_t cx = 0, cy = 0, iDisplay = 0, cBits = 32; 1069 VBOXPtr pVBox = pScrn->driverPrivate; 1070 1071 TRACE_ENTRY(); 1066 uint32_t cx = 0, cy = 0, iScreenIn = 0, cBits = 32; 1067 VBOXPtr pVBox = pScrn->driverPrivate; 1068 1069 TRACE_ENTRY(); 1070 bool found = false; 1071 if ( pVBox->aPreferredSize[iScreen].cx 1072 && pVBox->aPreferredSize[iScreen].cy) 1073 { 1074 cx = pVBox->aPreferredSize[iScreen].cx; 1075 cy = pVBox->aPreferredSize[iScreen].cy; 1076 found = true; 1077 } 1072 1078 if (pVBox->useDevice) 1073 1079 { 1074 bool found = vboxGetDisplayChangeRequest(pScrn, &cx, &cy, &cBits, &iDisplay); 1075 if ((cx == 0) || (cy == 0)) 1080 if (!found) 1081 found = vboxGetDisplayChangeRequest(pScrn, &cx, &cy, &cBits, 1082 &iScreenIn); 1083 if ((cx == 0) || (cy == 0) || iScreenIn != iScreen) 1076 1084 found = false; 1077 1085 if (!found) … … 1139 1147 1140 1148 TRACE_ENTRY(); 1141 vboxGetPreferredMode(pScrn, &cx, &cy, &cBits);1149 vboxGetPreferredMode(pScrn, 0, &cx, &cy, &cBits); 1142 1150 #ifdef DEBUG 1143 1151 /* Count the number of modes for sanity */ -
trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c
r35155 r35207 434 434 435 435 TRACE_ENTRY(); 436 if (vbox_device_available(pVBox)) 437 { 438 Bool rc = FALSE; 439 uint32_t x, y, bpp, iScreen; 440 iScreen = (uintptr_t)output->driver_private; 441 if ( pVBox->aPreferredSize[iScreen].cx 442 && pVBox->aPreferredSize[iScreen].cy) 443 { 444 x = pVBox->aPreferredSize[iScreen].cx; 445 y = pVBox->aPreferredSize[iScreen].cy; 446 rc = TRUE; 447 } 448 else 449 rc = vboxGetDisplayChangeRequest(pScrn, &x, &y, &bpp, &iScreen); 450 /* If we don't find a display request, see if we have a saved hint 451 * from a previous session. */ 452 if (!rc || (0 == x) || (0 == y)) 453 rc = vboxRetrieveVideoMode(pScrn, &x, &y, &bpp); 454 if (rc && (0 != x) && (0 != y)) 455 vbox_output_add_mode(pVBox, &pModes, NULL, x, y, TRUE, FALSE); 456 } 436 uint32_t x, y, bpp, iScreen; 437 iScreen = (uintptr_t)output->driver_private; 438 vboxGetPreferredMode(pScrn, iScreen, &x, &y, &bpp); 439 vbox_output_add_mode(pVBox, &pModes, NULL, x, y, TRUE, FALSE); 440 457 441 /* Also report any modes the user may have requested in the xorg.conf 458 442 * configuration file. */ 459 443 for (i = 0; pScrn->display->modes[i] != NULL; i++) 460 444 { 461 int x, y; 462 if (2 == sscanf(pScrn->display->modes[i], "%dx%d", &x, &y)) 445 if (2 == sscanf(pScrn->display->modes[i], "%ux%u", &x, &y)) 463 446 vbox_output_add_mode(pVBox, &pModes, pScrn->display->modes[i], x, y, 464 447 FALSE, TRUE); … … 877 860 uint32_t cx = 0, cy = 0, cBits = 0; 878 861 879 vboxGetPreferredMode(pScrn, &cx, &cy, &cBits);862 vboxGetPreferredMode(pScrn, 0, &cx, &cy, &cBits); 880 863 /* We only support 16 and 24 bits depth (i.e. 16 and 32bpp) */ 881 864 if (cBits != 16) … … 1046 1029 pVBox->vtSwitch = FALSE; 1047 1030 1048 if (vbox_ device_available(pVBox) && vbox_open (pScrn, pScreen, pVBox)) {1031 if (vbox_open (pScrn, pScreen, pVBox)) { 1049 1032 vboxEnableVbva(pScrn); 1050 1033 vboxEnableGraphicsCap(pVBox); … … 1324 1307 vboxEnableGraphicsCap(pVBox); 1325 1308 } 1326 if ( vbox_device_available(pVBox) 1327 && (pVBox->fHaveHGSMI) 1309 if ( (pVBox->fHaveHGSMI) 1328 1310 && !pVBox->vtSwitch) 1329 1311 VBoxHGSMIProcessDisplayInfo(&pVBox->guestCtx, cDisplay, x, y, -
trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.h
r35102 r35207 259 259 extern Bool vboxSaveVideoMode(ScrnInfoPtr pScrn, uint32_t cx, uint32_t cy, uint32_t cBits); 260 260 extern Bool vboxRetrieveVideoMode(ScrnInfoPtr pScrn, uint32_t *pcx, uint32_t *pcy, uint32_t *pcBits); 261 extern void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t *pcx, 262 uint32_t *pcy, uint32_t *pcBits); 261 extern void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t iScreen, 262 uint32_t *pcx, uint32_t *pcy, 263 uint32_t *pcBits); 263 264 extern void vboxWriteHostModes(ScrnInfoPtr pScrn, DisplayModePtr pCurrent); 264 265 extern void vboxAddModes(ScrnInfoPtr pScrn, uint32_t cxInit,
Note:
See TracChangeset
for help on using the changeset viewer.