VirtualBox

Changeset 35995 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Feb 16, 2011 1:44:55 PM (14 years ago)
Author:
vboxsync
Message:

crOpenGL: fix 3d window clipping for fbo case

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_muralfbo.c

    r35969 r35995  
    340340            crServerTransformRect(&rectwr, &rect, -mural->gX, -mural->gY);
    341341
     342#if 0 /*@todo recheck with compiz on guests, as we could sometimes have main compiz windows without visible rects*/
    342343            if (!mural->pVisibleRects)
    343344            {
     
    354355                cr_server.pfnPresentFBO(tmppixels, i, rect.x1-cr_server.screen[i].x, rect.y1-cr_server.screen[i].y, rect.x2-rect.x1, rect.y2-rect.y1);
    355356            }
    356             else
     357#endif
     358            for (j=0; j<mural->cVisibleRects; ++j)
    357359            {
    358                 for (j=0; j<mural->cVisibleRects; ++j)
     360                if (crServerIntersectRect(&rectwr, (CRrecti*) &mural->pVisibleRects[4*j], &sectr))
    359361                {
    360                     if (crServerIntersectRect(&rectwr, (CRrecti*) &mural->pVisibleRects[4*j], &sectr))
     362                    tmppixels = crAlloc(4*(sectr.x2-sectr.x1)*(sectr.y2-sectr.y1));
     363                    if (!tmppixels)
    361364                    {
    362                         tmppixels = crAlloc(4*(sectr.x2-sectr.x1)*(sectr.y2-sectr.y1));
    363                         if (!tmppixels)
    364                         {
    365                             crWarning("Out of memory in crServerPresentFBO");
    366                             crFree(pixels);
    367                             return;
    368                         }
    369 
    370                         crServerCopySubImage(tmppixels, pixels, &sectr, mural->fboWidth, mural->fboHeight);
    371                         /*Note: pfnPresentFBO would free tmppixels*/
    372                         cr_server.pfnPresentFBO(tmppixels, i,
    373                                                 sectr.x1+mural->gX-cr_server.screen[i].x,
    374                                                 sectr.y1+mural->gY-cr_server.screen[i].y,
    375                                                 sectr.x2-sectr.x1, sectr.y2-sectr.y1);
     365                        crWarning("Out of memory in crServerPresentFBO");
     366                        crFree(pixels);
     367                        return;
    376368                    }
     369
     370                    crServerCopySubImage(tmppixels, pixels, &sectr, mural->fboWidth, mural->fboHeight);
     371                    /*Note: pfnPresentFBO would free tmppixels*/
     372                    cr_server.pfnPresentFBO(tmppixels, i,
     373                                            sectr.x1+mural->gX-cr_server.screen[i].x,
     374                                            sectr.y1+mural->gY-cr_server.screen[i].y,
     375                                            sectr.x2-sectr.x1, sectr.y2-sectr.y1);
    377376                }
    378377            }
Note: See TracChangeset for help on using the changeset viewer.

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