VirtualBox

Changeset 35207 in vbox for trunk/src/VBox/Additions/x11


Ignore:
Timestamp:
Dec 16, 2010 9:59:30 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
69048
Message:

Additions/x11/vboxvideo: fail in less places if /dev/vboxguest is not available

Location:
trunk/src/VBox/Additions/x11/vboxvideo
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/x11/vboxvideo/vboxutils.c

    r35125 r35207  
    346346    TRACE_ENTRY();
    347347
    348     if (!pVBox->useDevice)
    349         return FALSE;
    350348    pVBox->fHaveHGSMI = vboxInitVbva(pScrn->scrnIndex, pScreen, pVBox);
    351     return TRUE;
     349    return pVBox->fHaveHGSMI;
    352350}
    353351
     
    10621060 * The return type is void as we guarantee we will return some mode.
    10631061 */
    1064 void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t *pcx,
     1062void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t iScreen, uint32_t *pcx,
    10651063                          uint32_t *pcy, uint32_t *pcBits)
    10661064{
    10671065    /* 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    }
    10721078    if (pVBox->useDevice)
    10731079    {
    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)
    10761084            found = false;
    10771085        if (!found)
     
    11391147
    11401148    TRACE_ENTRY();
    1141     vboxGetPreferredMode(pScrn, &cx, &cy, &cBits);
     1149    vboxGetPreferredMode(pScrn, 0, &cx, &cy, &cBits);
    11421150#ifdef DEBUG
    11431151    /* Count the number of modes for sanity */
  • trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.c

    r35155 r35207  
    434434
    435435    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
    457441    /* Also report any modes the user may have requested in the xorg.conf
    458442     * configuration file. */
    459443    for (i = 0; pScrn->display->modes[i] != NULL; i++)
    460444    {
    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))
    463446            vbox_output_add_mode(pVBox, &pModes, pScrn->display->modes[i], x, y,
    464447                                 FALSE, TRUE);
     
    877860        uint32_t cx = 0, cy = 0, cBits = 0;
    878861
    879         vboxGetPreferredMode(pScrn, &cx, &cy, &cBits);
     862        vboxGetPreferredMode(pScrn, 0, &cx, &cy, &cBits);
    880863        /* We only support 16 and 24 bits depth (i.e. 16 and 32bpp) */
    881864        if (cBits != 16)
     
    10461029    pVBox->vtSwitch = FALSE;
    10471030
    1048     if (vbox_device_available(pVBox) && vbox_open (pScrn, pScreen, pVBox)) {
     1031    if (vbox_open (pScrn, pScreen, pVBox)) {
    10491032        vboxEnableVbva(pScrn);
    10501033        vboxEnableGraphicsCap(pVBox);
     
    13241307            vboxEnableGraphicsCap(pVBox);
    13251308    }
    1326     if (    vbox_device_available(pVBox)
    1327         && (pVBox->fHaveHGSMI)
     1309    if (   (pVBox->fHaveHGSMI)
    13281310        && !pVBox->vtSwitch)
    13291311        VBoxHGSMIProcessDisplayInfo(&pVBox->guestCtx, cDisplay, x, y,
  • trunk/src/VBox/Additions/x11/vboxvideo/vboxvideo.h

    r35102 r35207  
    259259extern Bool vboxSaveVideoMode(ScrnInfoPtr pScrn, uint32_t cx, uint32_t cy, uint32_t cBits);
    260260extern 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);
     261extern void vboxGetPreferredMode(ScrnInfoPtr pScrn, uint32_t iScreen,
     262                                 uint32_t *pcx, uint32_t *pcy,
     263                                 uint32_t *pcBits);
    263264extern void vboxWriteHostModes(ScrnInfoPtr pScrn, DisplayModePtr pCurrent);
    264265extern void vboxAddModes(ScrnInfoPtr pScrn, uint32_t cxInit,
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette