From 31f9c57bc50ae053cfaf039a1dfdb128e2494458 Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Tue, 20 Oct 2015 13:18:59 +0300 Subject: Fix issues with COIN builds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Fix miscellaneous compile errors -Move manual tests to manual folder and enable export of autotests -Added widgets requirement -Fixed autotests -Fixed renderer and controller synchronization in QML case -Treat fallback Mesa as ES2 similar to setting AA_UseSoftwareOpenGL Change-Id: If6619733725d079e339bef16262e5ea1450ab20f Reviewed-by: Tomi Korpipää --- .../OpenNI/Include/XnModuleCppRegistratration.h | 303 +++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h (limited to 'tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h') diff --git a/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h new file mode 100644 index 00000000..207edb9c --- /dev/null +++ b/tests/manual/kinectsurface/QtKinectWrapper/OpenNI/Include/XnModuleCppRegistratration.h @@ -0,0 +1,303 @@ +/**************************************************************************** +* * +* OpenNI 1.x Alpha * +* Copyright (C) 2011 PrimeSense Ltd. * +* * +* This file is part of OpenNI. * +* * +* OpenNI is free software: you can redistribute it and/or modify * +* it under the terms of the GNU Lesser General Public License as published * +* by the Free Software Foundation, either version 3 of the License, or * +* (at your option) any later version. * +* * +* OpenNI is distributed in the hope that it will be useful, * +* but WITHOUT ANY WARRANTY; without even the implied warranty of * +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +* GNU Lesser General Public License for more details. * +* * +* You should have received a copy of the GNU Lesser General Public License * +* along with OpenNI. If not, see . * +* * +****************************************************************************/ +#ifndef __XN_MODULE_CPP_REGISTRATION_H__ +#define __XN_MODULE_CPP_REGISTRATION_H__ + +//--------------------------------------------------------------------------- +// Includes +//--------------------------------------------------------------------------- +#include "XnModuleCppInterface.h" +#include + +using namespace xn; + +//--------------------------------------------------------------------------- +// Internal Macros +//--------------------------------------------------------------------------- +/** Defines module instance name. */ +#define _XN_MODULE_INST g_pTheModule + +#define _CONCAT(a,b) a##b + +inline XnModuleNodeHandle __ModuleNodeToHandle(xn::ModuleProductionNode* pNode) +{ + return ((XnModuleNodeHandle)pNode); +} + +#define __XN_EXPORT_NODE_COMMON(ExportedClass, ExportedName, Type) \ + /** Create a static global instance. */ \ + static ExportedClass* ExportedName = new ExportedClass(); \ + \ + void XN_CALLBACK_TYPE _CONCAT(ExportedClass,GetDescription)(XnProductionNodeDescription* pDescription) \ + { \ + ExportedName->GetDescription(pDescription); \ + } \ + \ + XnStatus XN_CALLBACK_TYPE _CONCAT(ExportedClass,EnumerateProductionTrees) \ + (XnContext* pContext, XnNodeInfoList* pTreesList, XnEnumerationErrors* pErrors) \ + { \ + Context context(pContext); \ + NodeInfoList list(pTreesList); \ + EnumerationErrors errors(pErrors); \ + return ExportedName->EnumerateProductionTrees(context, list, pErrors == NULL ? NULL : &errors); \ + } \ + \ + XnStatus XN_CALLBACK_TYPE _CONCAT(ExportedClass,Create)(XnContext* pContext, \ + const XnChar* strInstanceName, \ + const XnChar* strCreationInfo, \ + XnNodeInfoList* pNeededTrees, \ + const XnChar* strConfigurationDir, \ + XnModuleNodeHandle* phInstance) \ + { \ + xn::NodeInfoList* pNeeded = NULL; \ + if (pNeededTrees != NULL) \ + { \ + pNeeded = XN_NEW(xn::NodeInfoList, pNeededTrees); \ + } \ + ModuleProductionNode* pNode; \ + Context context(pContext); \ + XnStatus nRetVal = ExportedName->Create(context, strInstanceName, strCreationInfo, \ + pNeeded, strConfigurationDir, &pNode); \ + if (nRetVal != XN_STATUS_OK) \ + { \ + XN_DELETE(pNeeded); \ + return (nRetVal); \ + } \ + *phInstance = __ModuleNodeToHandle(pNode); \ + XN_DELETE(pNeeded); \ + return (XN_STATUS_OK); \ + } \ + \ + void XN_CALLBACK_TYPE _CONCAT(ExportedClass,Destroy)(XnModuleNodeHandle hInstance) \ + { \ + ModuleProductionNode* pNode = (ModuleProductionNode*)hInstance; \ + ExportedName->Destroy(pNode); \ + } \ + \ + void XN_CALLBACK_TYPE _CONCAT(ExportedClass,GetExportedInterface)( \ + XnModuleExportedProductionNodeInterface* pInterface) \ + { \ + pInterface->GetDescription = _CONCAT(ExportedClass,GetDescription); \ + pInterface->EnumerateProductionTrees = _CONCAT(ExportedClass,EnumerateProductionTrees); \ + pInterface->Create = _CONCAT(ExportedClass,Create); \ + pInterface->Destroy = _CONCAT(ExportedClass,Destroy); \ + pInterface->GetInterface.General = __ModuleGetGetInterfaceFunc(Type); \ + } \ + \ + static XnStatus _CONCAT(ExportedClass,RegisterResult) = \ + _XN_MODULE_INST->AddExportedNode(_CONCAT(ExportedClass,GetExportedInterface)); + +#define _XN_EXPORT_NODE_COMMON(ExportedClass, Type) \ + __XN_EXPORT_NODE_COMMON(ExportedClass, _g_##ExportedClass, Type) + +//--------------------------------------------------------------------------- +// Forward Declarations +//--------------------------------------------------------------------------- + +void XN_CALLBACK_TYPE __ModuleGetProductionNodeInterface(XnModuleProductionNodeInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetDeviceInterface(XnModuleDeviceInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetGeneratorInterface(XnModuleGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetMapGeneratorInterface(XnModuleMapGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetDepthGeneratorInterface(XnModuleDepthGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetImageGeneratorInterface(XnModuleImageGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetIRGeneratorInterface(XnModuleIRGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetUserGeneratorInterface(XnModuleUserGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetHandsGeneratorInterface(XnModuleHandsGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetGestureGeneratorInterface(XnModuleGestureGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetSceneAnalyzerInterface(XnModuleSceneAnalyzerInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetAudioGeneratorInterface(XnModuleAudioGeneratorInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetRecorderInterface(XnModuleRecorderInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetPlayerInterface(XnModulePlayerInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetCodecInterface(XnModuleCodecInterface* pInterface); +void XN_CALLBACK_TYPE __ModuleGetScriptNodeInterface(XnModuleScriptNodeInterface* pInterface); + +//--------------------------------------------------------------------------- +// Utility Macros +//--------------------------------------------------------------------------- + +typedef void (XN_CALLBACK_TYPE *GetInterfaceFuncPtr)(void* pInterface); + +static GetInterfaceFuncPtr __ModuleGetGetInterfaceFunc(XnProductionNodeType type) +{ + // start with concrete type + if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_DEVICE)) + return (GetInterfaceFuncPtr)__ModuleGetDeviceInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_DEPTH)) + return (GetInterfaceFuncPtr)__ModuleGetDepthGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_IMAGE)) + return (GetInterfaceFuncPtr)__ModuleGetImageGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_IR)) + return (GetInterfaceFuncPtr)__ModuleGetIRGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_USER)) + return (GetInterfaceFuncPtr)__ModuleGetUserGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_GESTURE)) + return (GetInterfaceFuncPtr)__ModuleGetGestureGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_SCENE)) + return (GetInterfaceFuncPtr)__ModuleGetSceneAnalyzerInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_AUDIO)) + return (GetInterfaceFuncPtr)__ModuleGetAudioGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_RECORDER)) + return (GetInterfaceFuncPtr)__ModuleGetRecorderInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_PLAYER)) + return (GetInterfaceFuncPtr)__ModuleGetPlayerInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_HANDS)) + return (GetInterfaceFuncPtr)__ModuleGetHandsGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_CODEC)) + return (GetInterfaceFuncPtr)__ModuleGetCodecInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_SCRIPT)) + return (GetInterfaceFuncPtr)__ModuleGetScriptNodeInterface; + // and continue with abstract ones + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_MAP_GENERATOR)) + return (GetInterfaceFuncPtr)__ModuleGetMapGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_GENERATOR)) + return (GetInterfaceFuncPtr)__ModuleGetGeneratorInterface; + else if (xnIsTypeDerivedFrom(type, XN_NODE_TYPE_PRODUCTION_NODE)) + return (GetInterfaceFuncPtr)__ModuleGetProductionNodeInterface; + + // unknown + XN_ASSERT(FALSE); + return NULL; +} + +/** Exports an OpenNI module from the DLL. */ +#if XN_PLATFORM_SUPPORTS_DYNAMIC_LIBS + #define XN_EXPORT_MODULE(ModuleClass) \ + /** Declare the static variable */ \ + ModuleClass __moduleInstance; \ + Module* _XN_MODULE_INST = &__moduleInstance; +#else + #define XN_EXPORT_MODULE(ModuleClass) \ + /** Declare the static variable */ \ + static ModuleClass __moduleInstance; \ + static Module* _XN_MODULE_INST = &__moduleInstance; +#endif + +/** Exports a node from the DLL. */ +#define XN_EXPORT_NODE(ExportedClass, nodeType) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, nodeType) + +/** Exports a device node from the DLL. */ +#define XN_EXPORT_DEVICE(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_DEVICE) + +/** Exports a depth generator from the DLL. */ +#define XN_EXPORT_DEPTH(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_DEPTH) + +/** Exports an image generator from the DLL. */ +#define XN_EXPORT_IMAGE(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_IMAGE) + +/** Exports an IR generator from the DLL. */ +#define XN_EXPORT_IR(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_IR) + +#define XN_EXPORT_USER(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_USER) + +#define XN_EXPORT_HANDS(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_HANDS) + +#define XN_EXPORT_GESTURE(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_GESTURE) + +#define XN_EXPORT_SCENE(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_SCENE) + +/** Exports an Audio generator from the DLL. */ +#define XN_EXPORT_AUDIO(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_AUDIO) + +/** Exports a Recorder from the DLL. */ +#define XN_EXPORT_RECORDER(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_RECORDER) + +/** Exports a Player from the DLL. */ +#define XN_EXPORT_PLAYER(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_PLAYER) + +#define XN_EXPORT_CODEC(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_CODEC) + +#define XN_EXPORT_SCRIPT(ExportedClass) \ + _XN_EXPORT_NODE_COMMON(ExportedClass, XN_NODE_TYPE_SCRIPT) + +//--------------------------------------------------------------------------- +// Exported C functions +//--------------------------------------------------------------------------- +#if XN_PLATFORM_SUPPORTS_DYNAMIC_LIBS + #include + #define XN_MODULE_FUNC_TYPE XN_C_API_EXPORT + extern Module* _XN_MODULE_INST; +#else + #define XN_MODULE_FUNC_TYPE static + static Module* _XN_MODULE_INST; +#endif + +XN_MODULE_FUNC_TYPE XnStatus XN_C_DECL XN_MODULE_LOAD() +{ + XnStatus nRetVal = XN_STATUS_OK; + + nRetVal = _XN_MODULE_INST->Load(); + XN_IS_STATUS_OK(nRetVal); + + return (XN_STATUS_OK); +} + +XN_MODULE_FUNC_TYPE void XN_C_DECL XN_MODULE_UNLOAD() +{ + _XN_MODULE_INST->Unload(); +} + +XN_MODULE_FUNC_TYPE XnUInt32 XN_C_DECL XN_MODULE_GET_EXPORTED_NODES_COUNT() +{ + return _XN_MODULE_INST->GetExportedNodesCount(); +} + +XN_MODULE_FUNC_TYPE XnStatus XN_C_DECL XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS(XnModuleGetExportedInterfacePtr* aEntryPoints, XnUInt32 nCount) +{ + return _XN_MODULE_INST->GetExportedNodes(aEntryPoints, nCount); +} + +XN_MODULE_FUNC_TYPE void XN_C_DECL XN_MODULE_GET_OPEN_NI_VERSION(XnVersion* pVersion) +{ + pVersion->nMajor = XN_MAJOR_VERSION; + pVersion->nMinor = XN_MINOR_VERSION; + pVersion->nMaintenance = XN_MAINTENANCE_VERSION; + pVersion->nBuild = XN_BUILD_VERSION; +} + +#if !XN_PLATFORM_SUPPORTS_DYNAMIC_LIBS +#include + +static XnOpenNIModuleInterface moduleInterface = +{ + XN_MODULE_LOAD, + XN_MODULE_UNLOAD, + XN_MODULE_GET_EXPORTED_NODES_COUNT, + XN_MODULE_GET_EXPORTED_NODES_ENTRY_POINTS, + XN_MODULE_GET_OPEN_NI_VERSION +}; +static XnStatus registerResult = xnRegisterModuleWithOpenNI(&moduleInterface, NULL, __FILE__); +#endif + +#endif // __XN_MODULE_CPP_REGISTRATION_H__ -- cgit v1.2.3