VirtualBox

Ignore:
Timestamp:
May 21, 2014 7:46:25 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
93813
Message:

crOpenGL: more extended flexible caps info, backwards compatibility fixes

Location:
trunk/src/VBox/HostServices/SharedOpenGL
Files:
2 edited

Legend:

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

    r50921 r51330  
    904904        }
    905905
    906         case SHCRGL_GUEST_FN_GET_CAPS:
    907         {
    908             Log(("svcCall: SHCRGL_GUEST_FN_GET_CAPS\n"));
    909 
    910             /* Verify parameter count and types. */
    911             if (cParms != SHCRGL_CPARMS_GET_CAPS)
    912             {
    913                 rc = VERR_INVALID_PARAMETER;
    914             }
    915             else
    916             if (paParms[0].type != VBOX_HGCM_SVC_PARM_32BIT)
     906        case SHCRGL_GUEST_FN_GET_CAPS_NEW:
     907        {
     908            Log(("svcCall: SHCRGL_GUEST_FN_GET_CAPS_NEW\n"));
     909
     910            /* Verify parameter count and types. */
     911            if (cParms != SHCRGL_CPARMS_GET_CAPS_NEW)
     912            {
     913                WARN(("invalid parameter count"));
     914                rc = VERR_INVALID_PARAMETER;
     915                break;
     916            }
     917
     918            if (paParms[0].type != VBOX_HGCM_SVC_PARM_PTR)
     919            {
     920                WARN(("invalid parameter"));
     921                rc = VERR_INVALID_PARAMETER;
     922                break;
     923            }
     924
     925            if (paParms[0].u.pointer.size < sizeof (CR_CAPS_INFO))
     926            {
     927                WARN(("invalid buffer size"));
     928                rc = VERR_INVALID_PARAMETER;
     929                break;
     930            }
     931
     932            CR_CAPS_INFO *pInfo = (CR_CAPS_INFO*)paParms[0].u.pointer.addr;
     933            rc = crVBoxServerClientGetCapsNew(u32ClientID, pInfo);
     934            AssertRC(rc);
     935
     936            break;
     937        }
     938
     939        case SHCRGL_GUEST_FN_GET_CAPS_LEGACY:
     940        {
     941            Log(("svcCall: SHCRGL_GUEST_FN_GET_CAPS_LEGACY\n"));
     942
     943            /* Verify parameter count and types. */
     944            if (cParms != SHCRGL_CPARMS_GET_CAPS_LEGACY)
     945            {
     946                rc = VERR_INVALID_PARAMETER;
     947            }
     948            else if (paParms[0].type != VBOX_HGCM_SVC_PARM_32BIT)
    917949            {
    918950                rc = VERR_INVALID_PARAMETER;
     
    921953            {
    922954                /* Execute the function. */
    923                 rc = crVBoxServerClientGetCaps(u32ClientID, &paParms[0].u.uint32);
     955                rc = crVBoxServerClientGetCapsLegacy(u32ClientID, &paParms[0].u.uint32);
    924956                AssertRC(rc);
    925957            }
  • trunk/src/VBox/HostServices/SharedOpenGL/crserverlib/server_main.c

    r51320 r51330  
    840840}
    841841
    842 extern DECLEXPORT(int32_t) crVBoxServerClientGetCaps(uint32_t u32ClientID, uint32_t *pu32Caps)
    843 {
    844     *pu32Caps = cr_server.u32Caps;
     842extern DECLEXPORT(int32_t) crVBoxServerClientGetCapsLegacy(uint32_t u32ClientID, uint32_t *pu32Caps)
     843{
     844    uint32_t u32Caps = cr_server.u32Caps;
     845    u32Caps &= ~CR_VBOX_CAP_CMDVBVA;
     846    *pu32Caps = u32Caps;
     847    return VINF_SUCCESS;
     848}
     849
     850extern DECLEXPORT(int32_t) crVBoxServerClientGetCapsNew(uint32_t u32ClientID, CR_CAPS_INFO *pInfo)
     851{
     852    pInfo->u32Caps = cr_server.u32Caps;
     853    pInfo->u32CmdVbvaVersion = CR_CMDVBVA_VERSION;
    845854    return VINF_SUCCESS;
    846855}
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