VirtualBox

Changeset 46123 in vbox


Ignore:
Timestamp:
May 16, 2013 1:40:20 PM (12 years ago)
Author:
vboxsync
Message:

Main/VPX, VBoxManage: added IMachine::VideoCaptureScreens and IDisplay::{enableVideoCapture,disableVideoCapture}

Location:
trunk
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/settings.h

    r45971 r46123  
    826826    uint32_t            ulVideoCaptureFps;      // requires settings version 1.12 (VirtualBox 4.3)
    827827    bool                fVideoCaptureEnabled;   // requires settings version 1.12 (VirtualBox 4.3)
     828    uint64_t            u64VideoCaptureScreens; // requires settings version 1.12 (VirtualBox 4.3)
    828829    com::Utf8Str        strVideoCaptureFile;    // requires settings version 1.12 (VirtualBox 4.3)
     830
    829831    FirmwareType_T      firmwareType;           // requires settings version 1.9 (VirtualBox 3.1)
    830832
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageControlVM.cpp

    r45190 r46123  
    13011301            }
    13021302            int vrc;
    1303             uint32_t displayIdx = 0;
     1303            uint32_t iScreen = 0;
    13041304            if (a->argc == 4)
    13051305            {
    1306                 vrc = RTStrToUInt32Ex(a->argv[3], NULL, 0, &displayIdx);
     1306                vrc = RTStrToUInt32Ex(a->argv[3], NULL, 0, &iScreen);
    13071307                if (vrc != VINF_SUCCESS)
    13081308                {
     
    13211321            }
    13221322            ULONG width, height, bpp;
    1323             CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(displayIdx, &width, &height, &bpp));
     1323            CHECK_ERROR_BREAK(pDisplay, GetScreenResolution(iScreen, &width, &height, &bpp));
    13241324            com::SafeArray<BYTE> saScreenshot;
    1325             CHECK_ERROR_BREAK(pDisplay, TakeScreenShotPNGToArray(displayIdx, width, height, ComSafeArrayAsOutParam(saScreenshot)));
     1325            CHECK_ERROR_BREAK(pDisplay, TakeScreenShotPNGToArray(iScreen, width, height, ComSafeArrayAsOutParam(saScreenshot)));
    13261326            RTFILE pngFile = NIL_RTFILE;
    13271327            vrc = RTFileOpen(&pngFile, a->argv[2], RTFILE_O_OPEN_CREATE | RTFILE_O_WRITE | RTFILE_O_TRUNCATE | RTFILE_O_DENY_ALL);
     
    13401340            RTFileClose(pngFile);
    13411341        }
     1342        else if (   !strcmp(a->argv[1], "enablevideocapture")
     1343                 || !strcmp(a->argv[1], "disablevideocapture"))
     1344        {
     1345            ULONG cMonitors = 64;
     1346            CHECK_ERROR_BREAK(machine, COMGETTER(MonitorCount)(&cMonitors));
     1347            com::SafeArray<BOOL> saScreenIds(cMonitors);
     1348            if (a->argc < 3)
     1349            {
     1350                /* default: handle all screens */
     1351                for (unsigned i = 0; i < cMonitors; i++)
     1352                    saScreenIds[i] = true;
     1353            }
     1354            else
     1355            {
     1356                /* handle selected screens */
     1357                for (unsigned i = 0; i < cMonitors; i++)
     1358                    saScreenIds[i] = false;
     1359                for (int i = 2; SUCCEEDED(rc) && i < a->argc; i++)
     1360                {
     1361                    uint32_t iScreen;
     1362                    int vrc = RTStrToUInt32Ex(a->argv[i], NULL, 0, &iScreen);
     1363                    RTPrintf("i = %d => %d => %Rrc\n", i, iScreen, vrc);
     1364                    if (vrc != VINF_SUCCESS)
     1365                    {
     1366                        errorArgument("Error parsing display number '%s'", a->argv[i]);
     1367                        rc = E_FAIL;
     1368                        break;
     1369                    }
     1370                    if (iScreen >= cMonitors)
     1371                    {
     1372                        errorArgument("Invalid screen ID specified '%u'", iScreen);
     1373                        rc = E_FAIL;
     1374                        break;
     1375                    }
     1376                    saScreenIds[iScreen] = true;
     1377                }
     1378            }
     1379            for (unsigned i = 0; i < cMonitors; i++)
     1380                RTPrintf("  %d\n", saScreenIds[i]);
     1381            ComPtr<IDisplay> pDisplay;
     1382            CHECK_ERROR_BREAK(console, COMGETTER(Display)(pDisplay.asOutParam()));
     1383            if (!pDisplay)
     1384            {
     1385                RTMsgError("Guest not running");
     1386                rc = E_FAIL;
     1387                break;
     1388            }
     1389            if (!strcmp(a->argv[1], "enablevideocapture"))
     1390                CHECK_ERROR_BREAK(pDisplay, EnableVideoCapture(ComSafeArrayAsInParam(saScreenIds)));
     1391            else
     1392                CHECK_ERROR_BREAK(pDisplay, DisableVideoCapture(ComSafeArrayAsInParam(saScreenIds)));
     1393        }
    13421394        else
    13431395        {
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r46036 r46123  
    371371#ifdef VBOX_WITH_VPX
    372372                     "                            [--vcpenabled on|off]\n"
     373                     "                            [--vcpscreens [<display>],...\n"
    373374                     "                            [--vcpfile <filename>]\n"
    374375                     "                            [--vcpwidth <width>]\n"
     
    468469                     "                                              [<xorigin> <yorigin>]]] |\n"
    469470                     "                            screenshotpng <file> [display] |\n"
     471                     "                            enablevideocapture <screen>,[<screen>...]\n"
     472                     "                            disablevideocapture <screen>,[<screen>...]\n"
    470473                     "                            setcredentials <username>\n"
    471474                     "                                           --passwordfile <file> | <password>\n"
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp

    r46036 r46123  
    23062306        BOOL bActive = FALSE;
    23072307        CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureEnabled)(&bActive), rc);
     2308        com::SafeArray<BOOL> screens;
     2309        CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureScreens)(ComSafeArrayAsOutParam(screens)), rc);
    23082310        ULONG Width;
    23092311        CHECK_ERROR_RET(machine, COMGETTER(VideoCaptureWidth)(&Width), rc);
     
    23192321        {
    23202322            RTPrintf("VideoCaptureEnabled=\"%s\"\n", bActive ? "on" : "off");
     2323            RTPrintf("VideoCaptureScreens=");
     2324            bool fComma = false;
     2325            for (unsigned i = 0; i < screens.size(); i++)
     2326                if (screens[i])
     2327                {
     2328                    RTPrintf("%s%u", fComma ? "," : "", i);
     2329                    fComma = true;
     2330                }
     2331            RTPrintf("\n");
    23212332            RTPrintf("VideoCaptureWidth=%u\n", (unsigned)Width);
    23222333            RTPrintf("VideoCaptureFile=\"%ls\"\n", File.raw());
     
    23282339        {
    23292340            RTPrintf("Video capturing:    %s\n", bActive ? "active" : "not active");
     2341            RTPrintf("Capture screens:    ");
     2342            bool fComma = false;
     2343            for (unsigned i = 0; i < screens.size(); i++)
     2344                if (screens[i])
     2345                {
     2346                    RTPrintf("%s%u", fComma ? "," : "", i);
     2347                    fComma = true;
     2348                }
     2349            RTPrintf("\n");
    23302350            RTPrintf("Capture file:       %ls\n", File.raw());
    23312351            RTPrintf("Capture dimensions: %ux%u\n", Width, Height);
    2332             RTPrintf("Capture rate:       %ukbps\n", Rate);
     2352            RTPrintf("Capture rate:       %u kbps\n", Rate);
    23332353            RTPrintf("Capture FPS:        %u\n", Fps);
    23342354            RTPrintf("\n");
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r46036 r46123  
    196196#ifdef VBOX_WITH_VPX
    197197    MODIFYVM_VCP,
     198    MODIFYVM_VCP_SCREENS,
    198199    MODIFYVM_VCP_FILENAME,
    199200    MODIFYVM_VCP_WIDTH,
     
    344345#ifdef VBOX_WITH_VPX
    345346    { "--vcpenabled",               MODIFYVM_VCP,                       RTGETOPT_REQ_BOOL_ONOFF },
     347    { "--vcpscreens",               MODIFYVM_VCP_SCREENS,               RTGETOPT_REQ_STRING },
    346348    { "--vcpfile",                  MODIFYVM_VCP_FILENAME,              RTGETOPT_REQ_STRING },
    347349    { "--vcpwidth",                 MODIFYVM_VCP_WIDTH,                 RTGETOPT_REQ_UINT32 },
     
    409411        }
    410412    }
     413}
     414
     415int parseScreens(const char *pcszScreens, com::SafeArray<BOOL> *pScreens)
     416{
     417    while (pcszScreens && *pcszScreens)
     418    {
     419        char *pszNext;
     420        uint32_t iScreen;
     421        int rc = RTStrToUInt32Ex(pcszScreens, &pszNext, 0, &iScreen);
     422        if (RT_FAILURE(rc))
     423            return 1;
     424        if (iScreen >= pScreens->size())
     425            return 1;
     426        if (pszNext && *pszNext)
     427        {
     428            pszNext = RTStrStripL(pszNext);
     429            if (*pszNext != ',')
     430                return 1;
     431            pszNext++;
     432        }
     433        (*pScreens)[iScreen] = true;
     434        pcszScreens = pszNext;
     435    }
     436    return 0;
    411437}
    412438
     
    24492475                break;
    24502476            }
     2477            case MODIFYVM_VCP_SCREENS:
     2478            {
     2479                ULONG cMonitors = 64;
     2480                CHECK_ERROR(machine, COMGETTER(MonitorCount)(&cMonitors));
     2481                com::SafeArray<BOOL> screens(cMonitors);
     2482                if (parseScreens(ValueUnion.psz, &screens))
     2483                {
     2484                    errorArgument("Invalid list of screens specified\n");
     2485                    rc = E_FAIL;
     2486                    break;
     2487                }
     2488                CHECK_ERROR(machine, COMSETTER(VideoCaptureScreens)(ComSafeArrayAsInParam(screens)));
     2489                break;
     2490            }
    24512491            case MODIFYVM_VCP_FILENAME:
    24522492            {
  • trunk/src/VBox/Main/glue/glue-java.xsl

    r45483 r46123  
    26282628        List<Long> ret = new ArrayList<Long>(vals.length);
    26292629        for (long v : vals) {
    2630                 ret.add(v);
     2630            ret.add(v);
     2631        }
     2632        return ret;
     2633    }
     2634
     2635    public static List<Boolean> wrap(boolean[] vals) {
     2636        if (vals==null)
     2637            return null;
     2638
     2639        List<Boolean> ret = new ArrayList<Boolean>(vals.length);
     2640        for (boolean v: vals) {
     2641        ret.add(v);
    26312642        }
    26322643        return ret;
     
    27812792
    27822793    @SuppressWarnings( "unchecked")
    2783     public static <T> T[] unwrap(Class<T> wrapperClass, List<T> thisPtrs) {
     2794    public static <T> T[] unwrap(Class<T> wrapperClass, List<T> thisPtrs)
     2795    {
    27842796        if (thisPtrs==null)
    27852797            return null;
     
    27972809    public static Object queryInterface(Object obj, String uuid)
    27982810    {
    2799          try {
    2800             /* Kind of ugly, but does the job of casting */
    2801             org.mozilla.xpcom.Mozilla moz = org.mozilla.xpcom.Mozilla.getInstance();
    2802             long xpobj = moz.wrapJavaObject(obj, uuid);
    2803             return moz.wrapXPCOMObject(xpobj, uuid);
    2804          } catch (Exception e) {
    2805              return null;
    2806          }
     2811        try {
     2812           /* Kind of ugly, but does the job of casting */
     2813           org.mozilla.xpcom.Mozilla moz = org.mozilla.xpcom.Mozilla.getInstance();
     2814           long xpobj = moz.wrapJavaObject(obj, uuid);
     2815           return moz.wrapXPCOMObject(xpobj, uuid);
     2816        } catch (Exception e) {
     2817            return null;
     2818        }
    28072819    }
    28082820
    28092821    @SuppressWarnings("unchecked")
    2810     public static <T1 extends IUnknown,T2> T2[] unwrap2(Class<T1> wrapperClass1, Class<T2> wrapperClass2, List<T1> thisPtrs) {
     2822    public static <T1 extends IUnknown,T2> T2[] unwrap2(Class<T1> wrapperClass1, Class<T2> wrapperClass2, List<T1> thisPtrs)
     2823    {
    28112824        if (thisPtrs==null)  return null;
    28122825
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r45971 r46123  
    39803980  <interface
    39813981    name="IMachine" extends="$unknown"
    3982     uuid="55bf39d3-ac8f-4a77-90d8-1e2c726170ce"
     3982    uuid="258f4e55-40f6-4804-a162-60c302a34d99"
    39833983    wsmap="managed"
    39843984    >
     
    42424242    </attribute>
    42434243
     4244    <attribute name="VideoCaptureScreens" type="boolean" safearray="yes">
     4245      <desc>
     4246        This setting determines for which screens video recording is
     4247        enabled.</desc>
     4248    </attribute>
     4249
    42444250    <attribute name="VideoCaptureFile" type="wstring" default="Test.webm">
    42454251      <desc>
     
    62726278        <desc>VirtualSystemDescription object which is created for this machine.</desc>
    62736279      </param>
    6274     </method >
     6280    </method>
    62756281
    62766282    <method name="findSnapshot">
     
    1466914675  <interface
    1467014676    name="IDisplay" extends="$unknown"
    14671     uuid="b83ee395-8679-40ca-8d60-1a0cbe724930"
     14677    uuid="0598a3df-3dc0-43c7-a79c-237fb5bb633d"
    1467214678    wsmap="managed"
    1467314679    >
     
    1487414880        <desc>
    1487514881          Array with resulting screen data.
     14882        </desc>
     14883      </param>
     14884    </method>
     14885
     14886    <method name="enableVideoCapture">
     14887      <desc>
     14888        Start/continue video capture.
     14889      </desc>
     14890      <param name="screens" type="boolean" safearray="yes" dir="in">
     14891        <desc>
     14892          The screens to start/continue capturing.
     14893        </desc>
     14894      </param>
     14895    </method>
     14896
     14897    <method name="disableVideoCapture">
     14898      <desc>
     14899        Stop video capture.
     14900      </desc>
     14901      <param name="screens" type="boolean" safearray="yes" dir="in">
     14902        <desc>
     14903          The screens to stop capturing.
    1487614904        </desc>
    1487714905      </param>
  • trunk/src/VBox/Main/include/DisplayImpl.h

    r46065 r46123  
    170170    STDMETHOD(TakeScreenShotToArray)(ULONG aScreenId, ULONG width, ULONG height, ComSafeArrayOut(BYTE, aScreenData));
    171171    STDMETHOD(TakeScreenShotPNGToArray)(ULONG aScreenId, ULONG width, ULONG height, ComSafeArrayOut(BYTE, aScreenData));
     172    STDMETHOD(EnableVideoCapture)(ComSafeArrayIn(BOOL, aScreens));
     173    STDMETHOD(DisableVideoCapture)(ComSafeArrayIn(BOOL, aScreens));
    172174    STDMETHOD(DrawToScreen)(ULONG aScreenId, BYTE *address, ULONG x, ULONG y, ULONG width, ULONG height);
    173175    STDMETHOD(InvalidateAndUpdate)();
     
    304306#ifdef VBOX_WITH_VPX
    305307    VIDEORECCONTEXT *mpVideoRecCtx;
     308    bool maVideoRecEnabled[SchemaDefs::MaxGuestMonitors];
    306309#endif
    307310};
  • trunk/src/VBox/Main/include/MachineImpl.h

    r45971 r46123  
    263263        Bstr                mVideoCaptureFile;
    264264        BOOL                mVideoCaptureEnabled;
     265        BOOL                maVideoCaptureScreens[SchemaDefs::MaxGuestMonitors];
    265266        ULONG               mMonitorCount;
    266267        BOOL                mHWVirtExEnabled;
     
    435436    STDMETHOD(COMGETTER(VideoCaptureEnabled))(BOOL *u8VideoRecEnabled);
    436437    STDMETHOD(COMSETTER(VideoCaptureEnabled))(BOOL  u8VideoRecEnabled);
     438    STDMETHOD(COMGETTER(VideoCaptureScreens))(ComSafeArrayOut(BOOL, aScreens));
     439    STDMETHOD(COMSETTER(VideoCaptureScreens))(ComSafeArrayIn(BOOL, aScreens));
    437440    STDMETHOD(COMGETTER(VideoCaptureFile))(BSTR * ppChVideoRecFilename);
    438441    STDMETHOD(COMSETTER(VideoCaptureFile))(IN_BSTR pChVideoRecFilename);
  • trunk/src/VBox/Main/src-client/DisplayImpl.cpp

    r46086 r46123  
    134134#ifdef VBOX_WITH_VPX
    135135    mpVideoRecCtx = NULL;
     136    for (unsigned i = 0; i < RT_ELEMENTS(maVideoRecEnabled); i++)
     137        maVideoRecEnabled[i] = true;
    136138#endif
    137139
     
    26722674}
    26732675
    2674 
    2675 int Display::drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address, ULONG x, ULONG y, ULONG width, ULONG height)
     2676STDMETHODIMP Display::EnableVideoCapture(ComSafeArrayIn(BOOL, aScreens))
     2677{
     2678#ifdef VBOX_WITH_VPX
     2679    com::SafeArray<LONG> Screens(ComSafeArrayInArg(aScreens));
     2680    for (unsigned i = 0; i < Screens.size(); i++)
     2681        if (Screens[i])
     2682            maVideoRecEnabled[i] = true;
     2683    return S_OK;
     2684#else
     2685    return E_NOTIMPL;
     2686#endif
     2687}
     2688
     2689STDMETHODIMP Display::DisableVideoCapture(ComSafeArrayIn(BOOL, aScreens))
     2690{
     2691#ifdef VBOX_WITH_VPX
     2692    com::SafeArray<LONG> Screens(ComSafeArrayInArg(aScreens));
     2693    for (unsigned i = 0; i < Screens.size(); i++)
     2694        if (Screens[i])
     2695            maVideoRecEnabled[i] = false;
     2696    return S_OK;
     2697#else
     2698    return E_NOTIMPL;
     2699#endif
     2700}
     2701
     2702int Display::drawToScreenEMT(Display *pDisplay, ULONG aScreenId, BYTE *address,
     2703                             ULONG x, ULONG y, ULONG width, ULONG height)
    26762704{
    26772705    int rc = VINF_SUCCESS;
     
    27772805}
    27782806
    2779 STDMETHODIMP Display::DrawToScreen (ULONG aScreenId, BYTE *address, ULONG x, ULONG y,
    2780                                     ULONG width, ULONG height)
     2807STDMETHODIMP Display::DrawToScreen(ULONG aScreenId, BYTE *address,
     2808                                   ULONG x, ULONG y, ULONG width, ULONG height)
    27812809{
    27822810    /// @todo (r=dmik) this function may take too long to complete if the VM
     
    33643392        for (uScreenId = 0; uScreenId < pDisplay->mcMonitors; uScreenId++)
    33653393        {
     3394            if (!pDisplay->maVideoRecEnabled[uScreenId])
     3395                continue;
     3396
    33663397            DISPLAYFBINFO *pFBInfo = &pDisplay->maFramebuffers[uScreenId];
    33673398
     
    44354466            return E_FAIL;
    44364467        }
     4468        com::SafeArray<BOOL> screens;
     4469        int hrc = pMachine->COMGETTER(VideoCaptureScreens)(ComSafeArrayAsOutParam(screens));
     4470        AssertComRCReturnRC(hrc);
     4471        for (unsigned i = 0; i < RT_ELEMENTS(pDisplay->maVideoRecEnabled); i++)
     4472            pDisplay->maVideoRecEnabled[i] = i < screens.size() && screens[i];
    44374473        ULONG ulWidth;
    4438         int hrc = pMachine->COMGETTER(VideoCaptureWidth)(&ulWidth);
     4474        hrc = pMachine->COMGETTER(VideoCaptureWidth)(&ulWidth);
    44394475        AssertComRCReturnRC(hrc);
    44404476        ULONG ulHeight;
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r46056 r46123  
    173173    mVideoCaptureFps = 25;
    174174    mVideoCaptureEnabled = false;
     175    for (unsigned i = 0; i < RT_ELEMENTS(maVideoCaptureScreens); i++)
     176        maVideoCaptureScreens[i] = true;
    175177
    176178    mHWVirtExEnabled = true;
     
    17231725    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    17241726    mHWData->mVideoCaptureEnabled = fEnabled;
     1727    return S_OK;
     1728}
     1729
     1730STDMETHODIMP Machine::COMGETTER(VideoCaptureScreens)(ComSafeArrayOut(BOOL, aScreens))
     1731{
     1732    CheckComArgOutSafeArrayPointerValid(aScreens);
     1733
     1734    SafeArray<BOOL> screens(mHWData->mMonitorCount);
     1735    for (unsigned i = 0; i < screens.size(); i++)
     1736        screens[i] = mHWData->maVideoCaptureScreens[i];
     1737    screens.detachTo(ComSafeArrayOutArg(aScreens));
     1738    return S_OK;
     1739}
     1740
     1741STDMETHODIMP Machine::COMSETTER(VideoCaptureScreens)(ComSafeArrayIn(BOOL, aScreens))
     1742{
     1743    SafeArray<BOOL> screens(ComSafeArrayInArg(aScreens));
     1744    AssertReturn(screens.size() <= RT_ELEMENTS(mHWData->maVideoCaptureScreens), E_INVALIDARG);
     1745    for (unsigned i = 0; i < screens.size(); i++)
     1746        mHWData->maVideoCaptureScreens[i] = RT_BOOL(screens[i]);
    17251747    return S_OK;
    17261748}
     
    89028924        mHWData->mVideoCaptureHeight = data.ulVideoCaptureVertRes;
    89038925        mHWData->mVideoCaptureEnabled = data.fVideoCaptureEnabled;
     8926        for (unsigned i = 0; i < RT_ELEMENTS(mHWData->maVideoCaptureScreens); i++)
     8927            mHWData->maVideoCaptureScreens[i] = ASMBitTest(&data.u64VideoCaptureScreens, i);
     8928        AssertCompile(RT_ELEMENTS(mHWData->maVideoCaptureScreens) == sizeof(data.u64VideoCaptureScreens) * 8);
    89048929        mHWData->mVideoCaptureRate = data.ulVideoCaptureRate;
    89058930        mHWData->mVideoCaptureFps = data.ulVideoCaptureFps;
     
    1012410149        data.ulVideoCaptureFps = mHWData->mVideoCaptureFps;
    1012510150        data.fVideoCaptureEnabled  = !!mHWData->mVideoCaptureEnabled;
     10151        for (unsigned i = 0; i < sizeof(data.u64VideoCaptureScreens) * 8; i++)
     10152        {
     10153            if (mHWData->maVideoCaptureScreens)
     10154                ASMBitSet(&data.fVideoCaptureEnabled, i);
     10155            else
     10156                ASMBitClear(&data.fVideoCaptureEnabled, i);
     10157        }
    1012610158        data.strVideoCaptureFile = mHWData->mVideoCaptureFile;
    1012710159
  • trunk/src/VBox/Main/xml/Settings.cpp

    r45971 r46123  
    17531753          ulVideoCaptureFps(25),
    17541754          fVideoCaptureEnabled(false),
     1755          u64VideoCaptureScreens(UINT64_C(0xffffffffffffffff)),
    17551756          strVideoCaptureFile("Test.webm"),
    17561757          firmwareType(FirmwareType_BIOS),
     
    18231824                  && (fAccelerate2DVideo        == h.fAccelerate2DVideo)
    18241825                  && (fVideoCaptureEnabled      == h.fVideoCaptureEnabled)
     1826                  && (u64VideoCaptureScreens    == h.u64VideoCaptureScreens)
    18251827                  && (strVideoCaptureFile       == h.strVideoCaptureFile)
    18261828                  && (ulVideoCaptureHorzRes     == h.ulVideoCaptureHorzRes)
     
    27242726        else if (pelmHwChild->nameEquals("VideoCapture"))
    27252727        {
    2726             pelmHwChild->getAttributeValue("enabled", hw.fVideoCaptureEnabled);
    2727             pelmHwChild->getAttributeValue("file",    hw.strVideoCaptureFile);
    2728             pelmHwChild->getAttributeValue("horzRes", hw.ulVideoCaptureHorzRes);
    2729             pelmHwChild->getAttributeValue("vertRes", hw.ulVideoCaptureVertRes);
    2730             pelmHwChild->getAttributeValue("rate",    hw.ulVideoCaptureRate);
    2731             pelmHwChild->getAttributeValue("fps",     hw.ulVideoCaptureFps);
     2728            pelmHwChild->getAttributeValue("enabled",   hw.fVideoCaptureEnabled);
     2729            pelmHwChild->getAttributeValue("screens",   hw.u64VideoCaptureScreens);
     2730            pelmHwChild->getAttributeValue("file",      hw.strVideoCaptureFile);
     2731            pelmHwChild->getAttributeValue("horzRes",   hw.ulVideoCaptureHorzRes);
     2732            pelmHwChild->getAttributeValue("vertRes",   hw.ulVideoCaptureVertRes);
     2733            pelmHwChild->getAttributeValue("rate",      hw.ulVideoCaptureRate);
     2734            pelmHwChild->getAttributeValue("fps",       hw.ulVideoCaptureFps);
    27322735        }
    27332736        else if (pelmHwChild->nameEquals("RemoteDisplay"))
     
    39113914    if (m->sv >= SettingsVersion_v1_12)
    39123915    {
    3913         pelmVideoCapture->setAttribute("enabled", hw.fVideoCaptureEnabled);
    3914         pelmVideoCapture->setAttribute("file",    hw.strVideoCaptureFile);
    3915         pelmVideoCapture->setAttribute("horzRes", hw.ulVideoCaptureHorzRes);
    3916         pelmVideoCapture->setAttribute("vertRes", hw.ulVideoCaptureVertRes);
    3917         pelmVideoCapture->setAttribute("rate",    hw.ulVideoCaptureRate);
    3918         pelmVideoCapture->setAttribute("fps",     hw.ulVideoCaptureFps);
     3916        pelmVideoCapture->setAttribute("enabled",   hw.fVideoCaptureEnabled);
     3917        pelmVideoCapture->setAttribute("screens",   hw.u64VideoCaptureScreens);
     3918        pelmVideoCapture->setAttribute("file",      hw.strVideoCaptureFile);
     3919        pelmVideoCapture->setAttribute("horzRes",   hw.ulVideoCaptureHorzRes);
     3920        pelmVideoCapture->setAttribute("vertRes",   hw.ulVideoCaptureVertRes);
     3921        pelmVideoCapture->setAttribute("rate",      hw.ulVideoCaptureRate);
     3922        pelmVideoCapture->setAttribute("fps",       hw.ulVideoCaptureFps);
    39193923    }
    39203924
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