| 2991 | } |
| 2992 | |
| 2993 | XnStatus xnRegisterToModuleStateChange(XnModuleRegisterStateChangeFuncPtr funcPtr, XnModuleNodeHandle hModuleNode, XnNodeHandle hNode, XnStateChangedHandler handler, void* pCookie, XnCallbackHandle* phCallback) |
| 2994 | { |
| 2995 | XnStatus nRetVal = XN_STATUS_OK; |
| 2996 | |
| 2997 | XnModuleStateCookie* pModuleCookie = NULL; |
| 2998 | XN_VALIDATE_CALLOC(pModuleCookie, XnModuleStateCookie, 1); |
| 2999 | pModuleCookie->hNode = hNode; |
| 3000 | pModuleCookie->userHandler = handler; |
| 3001 | pModuleCookie->pUserCookie = pCookie; |
| 3002 | |
| 3003 | nRetVal = funcPtr(hModuleNode, xnModuleStateChanged, pModuleCookie, &pModuleCookie->hModuleCallback); |
| 3004 | if (nRetVal != XN_STATUS_OK) |
| 3005 | { |
| 3006 | xnOSFree(pModuleCookie); |
| 3007 | return (nRetVal); |
| 3008 | } |
| 3009 | |
| 3010 | // keep the cookie, so we can free it when node is destroyed |
| 3011 | hNode->pRegistrationCookiesHash->Set(pModuleCookie, pModuleCookie); |
| 3012 | |
| 3013 | *phCallback = pModuleCookie; |
| 3014 | return (XN_STATUS_OK); |
| 3015 | } |
| 3016 | |
| 3017 | void xnUnregisterFromModuleStateChange(XnModuleUnregisterStateChangeFuncPtr funcPtr, XnModuleNodeHandle hModuleNode, XnCallbackHandle hCallback) |
| 3018 | { |
no test coverage detected