VirtualBox

Ignore:
Timestamp:
Feb 3, 2014 7:29:26 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
92023
Message:

crOpenGL/VideoRec: do hardweight screen capthure only when recorder is ready

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp

    r50313 r50314  
    933933}
    934934
     935static void crScreenshotHandle(CRVBOXHGCMTAKESCREENSHOT *pScreenshot, uint32_t idScreen, uint64_t u64Now)
     936{
     937    if (!pScreenshot->pfnScreenshotBegin || pScreenshot->pfnScreenshotBegin(pScreenshot->pvContext, idScreen, u64Now))
     938    {
     939        CR_SCREENSHOT Screenshot;
     940
     941        int rc = crServerVBoxScreenshotGet(idScreen, &Screenshot);
     942        if (RT_SUCCESS(rc))
     943        {
     944            pScreenshot->pfnScreenshotPerform(pScreenshot->pvContext, idScreen,
     945                    0, 0, 32,
     946                    Screenshot.Img.pitch, Screenshot.Img.width, Screenshot.Img.height,
     947                    (uint8_t*)Screenshot.Img.pvData, u64Now);
     948            crServerVBoxScreenshotRelease(&Screenshot);
     949        }
     950        else
     951        {
     952            Assert(rc == VERR_INVALID_STATE);
     953        }
     954
     955        if (pScreenshot->pfnScreenshotEnd)
     956            pScreenshot->pfnScreenshotEnd(pScreenshot->pvContext, idScreen, u64Now);
     957    }
     958}
     959
    935960/*
    936961 * We differentiate between a function handler for the guest and one for the host.
     
    12251250                for (uint32_t i = 0; i < g_u32ScreenCount; ++i)
    12261251                {
    1227                     CR_SCREENSHOT Screenshot;
    1228 
    1229                     int rc = crServerVBoxScreenshotGet(i, &Screenshot);
    1230                     if (RT_SUCCESS(rc))
    1231                     {
    1232                         pScreenshot->pfnScreenshot(pScreenshot->pvContext, i,
    1233                                 0, 0, 32,
    1234                                 Screenshot.Img.pitch, Screenshot.Img.width, Screenshot.Img.height,
    1235                                 (uint8_t*)Screenshot.Img.pvData, u64Now);
    1236                         crServerVBoxScreenshotRelease(&Screenshot);
    1237                     }
    1238                     else
    1239                     {
    1240                         Assert(rc == VERR_INVALID_STATE);
    1241                     }
     1252                    crScreenshotHandle(pScreenshot, i, u64Now);
    12421253                }
    12431254            }
    12441255            else if (pScreenshot->u32Screen < g_u32ScreenCount)
    12451256            {
    1246                 CR_SCREENSHOT Screenshot;
    1247 
    1248                 int rc = crServerVBoxScreenshotGet(pScreenshot->u32Screen, &Screenshot);
    1249                 if (RT_SUCCESS(rc))
    1250                 {
    1251                     pScreenshot->pfnScreenshot(pScreenshot->pvContext, pScreenshot->u32Screen,
    1252                             0, 0, 32,
    1253                             Screenshot.Img.pitch, Screenshot.Img.width, Screenshot.Img.height,
    1254                             (uint8_t*)Screenshot.Img.pvData, u64Now);
    1255                     crServerVBoxScreenshotRelease(&Screenshot);
    1256                 }
    1257                 else
    1258                 {
    1259                     Assert(rc == VERR_INVALID_STATE);
    1260                 }
     1257                crScreenshotHandle(pScreenshot, pScreenshot->u32Screen, u64Now);
    12611258            }
    12621259            else
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