Changeset 50812 in vbox for trunk/src/VBox/HostServices/SharedOpenGL/crserver
- Timestamp:
- Mar 18, 2014 5:14:09 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 92856
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/HostServices/SharedOpenGL/crserver/crservice.cpp
r50754 r50812 962 962 * We differentiate between a function handler for the guest and one for the host. 963 963 */ 964 static int svcHostCallPerform( void *,uint32_t u32Function, uint32_t cParms, VBOXHGCMSVCPARM paParms[])964 static int svcHostCallPerform(uint32_t u32Function, uint32_t cParms, VBOXHGCMSVCPARM paParms[]) 965 965 { 966 966 int rc = VINF_SUCCESS; … … 1473 1473 } 1474 1474 1475 static DECLCALLBACK(int) svcHostCall (void *, uint32_t u32Function, uint32_t cParms, VBOXHGCMSVCPARM paParms[]) 1475 int crVBoxServerHostCtl(VBOXCRCMDCTL *pCtl, uint32_t cbCtl) 1476 { 1477 if ((cbCtl - sizeof (VBOXCRCMDCTL)) % sizeof(VBOXHGCMSVCPARM)) 1478 { 1479 WARN(("invalid param size")); 1480 return VERR_INVALID_PARAMETER; 1481 } 1482 uint32_t cParams = (cbCtl - sizeof (VBOXCRCMDCTL)) / sizeof (VBOXHGCMSVCPARM); 1483 return svcHostCallPerform(pCtl->u32Function, cParams, (VBOXHGCMSVCPARM*)(pCtl + 1)); 1484 } 1485 1486 static DECLCALLBACK(int) svcHostCall(void *, uint32_t u32Function, uint32_t cParms, VBOXHGCMSVCPARM paParms[]) 1476 1487 { 1477 1488 switch (u32Function) … … 1497 1508 } 1498 1509 1499 if ((paParms->u.pointer.size - sizeof (VBOXCRCMDCTL)) % sizeof(VBOXHGCMSVCPARM))1500 {1501 WARN(("invalid param size"));1502 return VERR_INVALID_PARAMETER;1503 }1504 1505 1510 VBOXCRCMDCTL *pCtl = (VBOXCRCMDCTL*)paParms->u.pointer.addr; 1506 uint32_t cParams = (paParms->u.pointer.size - sizeof (VBOXCRCMDCTL)) / sizeof (VBOXHGCMSVCPARM); 1507 return svcHostCallPerform(NULL, pCtl->u32Function, cParms, (VBOXHGCMSVCPARM*)(pCtl + 1)); 1508 } 1509 case VBOXCRCMDCTL_TYPE_DISABLE: 1510 AssertMsgFailed(("VBOXCRCMDCTL_TYPE_DISABLE\n")); 1511 return VERR_NOT_IMPLEMENTED; 1512 case VBOXCRCMDCTL_TYPE_ENABLE: 1513 AssertMsgFailed(("VBOXCRCMDCTL_TYPE_ENABLE\n")); 1514 return VERR_NOT_IMPLEMENTED; 1511 switch (pCtl->enmType) 1512 { 1513 case VBOXCRCMDCTL_TYPE_HGCM: 1514 { 1515 return crVBoxServerHostCtl(pCtl, paParms->u.pointer.size); 1516 } 1517 case VBOXCRCMDCTL_TYPE_DISABLE: 1518 { 1519 if (paParms->u.pointer.size != sizeof (VBOXCRCMDCTL)) 1520 WARN(("invalid param size")); 1521 return crVBoxServerHgcmDisable(); 1522 } 1523 case VBOXCRCMDCTL_TYPE_ENABLE: 1524 { 1525 if (paParms->u.pointer.size != sizeof (VBOXCRCMDCTL_ENABLE)) 1526 WARN(("invalid param size")); 1527 VBOXCRCMDCTL_ENABLE *pEnable = (VBOXCRCMDCTL_ENABLE*)pCtl; 1528 return crVBoxServerHgcmEnable(pEnable->hRHCmd, pEnable->pfnRHCmd); 1529 } 1530 default: 1531 WARN(("invalid function")); 1532 return VERR_INVALID_PARAMETER; 1533 } 1534 WARN(("should not be here!")); 1535 return VERR_INTERNAL_ERROR; 1536 } 1515 1537 default: 1516 return svcHostCallPerform(NULL, u32Function, cParms, paParms); 1517 } 1518 1538 return svcHostCallPerform(u32Function, cParms, paParms); 1539 } 1519 1540 } 1520 1541
Note:
See TracChangeset
for help on using the changeset viewer.