From a8a619f078f543b56e8ae785d92844b806444195 Mon Sep 17 00:00:00 2001 From: Wim Vriend Date: Fri, 11 Feb 2011 16:30:47 +0000 Subject: Some more work on the Client/Server protocol. git-svn-id: svn+ssh://svn.code.sf.net/p/facetracknoir/code@50 19e81ba0-9b1a-49c3-bd6c-561e1906d5fb --- FaceTrackNoIR/FGServer.cpp | 14 ++++++---- FaceTrackNoIR/FaceTrackNoIR.cpp | 53 ++++++++++++++++++++++++++++++-------- FaceTrackNoIR/FaceTrackNoIR.h | 13 ++++++++++ FaceTrackNoIR/FaceTrackNoIR.vcproj | 26 +++++++++---------- FaceTrackNoIR/tracker.cpp | 1 + 5 files changed, 78 insertions(+), 29 deletions(-) (limited to 'FaceTrackNoIR') diff --git a/FaceTrackNoIR/FGServer.cpp b/FaceTrackNoIR/FGServer.cpp index 292c194b..66cc1d5d 100644 --- a/FaceTrackNoIR/FGServer.cpp +++ b/FaceTrackNoIR/FGServer.cpp @@ -46,11 +46,15 @@ FGServer::FGServer( Tracker *parent ) { /** destructor **/ FGServer::~FGServer() { - inSocket->close(); - outSocket->close(); - - delete inSocket; - delete outSocket; + if (inSocket != 0) { + inSocket->close(); + delete inSocket; + } + + if (outSocket != 0) { + outSocket->close(); + delete outSocket; + } } // diff --git a/FaceTrackNoIR/FaceTrackNoIR.cpp b/FaceTrackNoIR/FaceTrackNoIR.cpp index 3502d3c4..e9a0c8be 100644 --- a/FaceTrackNoIR/FaceTrackNoIR.cpp +++ b/FaceTrackNoIR/FaceTrackNoIR.cpp @@ -442,6 +442,7 @@ void FaceTrackNoIR::loadSettings() { iniFile.beginGroup ( "TrackerSource" ); ui.iconcomboTrackerSource->setCurrentIndex(iniFile.value ( "Selection", 0 ).toInt()); + trackingSourceSelected( ui.iconcomboTrackerSource->currentIndex() ); iniFile.endGroup (); settingsDirty = false; @@ -702,6 +703,11 @@ void FaceTrackNoIR::showHeadPoseWidget() { /** toggles Engine Controls Dialog **/ void FaceTrackNoIR::showEngineControls() { +importGetTrackerDialog getIT; +QLibrary *trackerLib; + + + qDebug() << "FaceTrackNoIR::showEngineControls started."; // // Delete the existing QDialog @@ -711,6 +717,8 @@ void FaceTrackNoIR::showEngineControls() { _engine_controls = 0; } + qDebug() << "FaceTrackNoIR::showEngineControls after remove engine_controls."; + // Create new if (!_engine_controls) { @@ -719,6 +727,29 @@ void FaceTrackNoIR::showEngineControls() { _engine_controls = new EngineControls( tracker->getEngine(), true, false, this, Qt::Dialog ); break; case FT_FTNOIR: // FTNoir server + qDebug() << "FaceTrackNoIR::showEngineControls case FT_FTNOIR."; + + trackerLib = new QLibrary("FTNoIR_Tracker_UDP.dll"); + + qDebug() << "FaceTrackNoIR::showEngineControls Loaded trackerLib." << trackerLib; + + getIT = (importGetTrackerDialog) trackerLib->resolve("GetTrackerDialog"); + + qDebug() << "FaceTrackNoIR::showEngineControls resolved?." << getIT; + + if (getIT) { + ITrackerDialogPtr ptrXyz(getIT()); + if (ptrXyz) + { + pTrackerDialog = ptrXyz; + pTrackerDialog->Initialize( this ); + qDebug() << "FaceTrackNoIR::showEngineControls GetTrackerDialog Function Resolved!"; + } + } + else { + QMessageBox::warning(0,"FaceTrackNoIR Error", "DLL not loaded",QMessageBox::Ok,QMessageBox::NoButton); + } + break; default: break; @@ -951,17 +982,17 @@ void FaceTrackNoIR::iconActivated(QSystemTrayIcon::ActivationReason reason) void FaceTrackNoIR::trackingSourceSelected(int index) { settingsDirty = true; - switch (ui.iconcomboTrackerSource->currentIndex()) { - case FT_SM_FACEAPI: // Face API - ui.btnShowEngineControls->setEnabled ( false ); - break; - case FT_FTNOIR: // FTNoir server - ui.video_frame->hide(); - ui.headPoseWidget->show(); - ui.btnShowEngineControls->setEnabled ( true ); - break; - default: - break; + switch ( index ) { + case FT_SM_FACEAPI: // Face API + ui.btnShowEngineControls->setEnabled ( false ); + break; + case FT_FTNOIR: // FTNoir server + ui.video_frame->hide(); + ui.headPoseWidget->show(); + ui.btnShowEngineControls->setEnabled ( true ); + break; + default: + break; } } diff --git a/FaceTrackNoIR/FaceTrackNoIR.h b/FaceTrackNoIR/FaceTrackNoIR.h index af0df504..0498770a 100644 --- a/FaceTrackNoIR/FaceTrackNoIR.h +++ b/FaceTrackNoIR/FaceTrackNoIR.h @@ -39,6 +39,17 @@ #include "ui_FTNoIR_KeyboardShortcuts.h" #include "ui_FTNoIR_Preferences.h" #include "ui_FTNoIR_Curves.h" + +#include "FTNoIR_Tracker_UDP.h" +#include "AutoClosePtr.h" + +// 1a. COM-Like usage with smart pointer. +// No need to call `ITracker::Release'; the instance will +// be released automatically in destructor of the smart pointer. +typedef AutoClosePtr ITrackerDialogPtr; +typedef ITrackerDialog *(WINAPI *importGetTrackerDialog)(void); + + #include #include @@ -67,6 +78,8 @@ private: QTimer *timMinimizeFTN; QStringList iniFileList; // List of INI-files, that are present in the Settings folder + ITrackerDialogPtr pTrackerDialog; // Pointer to Tracker dialog instance (in DLL) + /** face api variables **/ VideoDisplayWidget *_display; QVBoxLayout *l; diff --git a/FaceTrackNoIR/FaceTrackNoIR.vcproj b/FaceTrackNoIR/FaceTrackNoIR.vcproj index aeb346da..08ab6ddd 100644 --- a/FaceTrackNoIR/FaceTrackNoIR.vcproj +++ b/FaceTrackNoIR/FaceTrackNoIR.vcproj @@ -47,7 +47,7 @@ OmitFramePointers="false" EnableFiberSafeOptimizations="false" WholeProgramOptimization="false" - AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";"$(QTDIR)\include\QtOpenGL";"$(QTDIR)\include\QtWebKit";"$(QTDIR)\include\QtTest";"$(SM_API_PATH)\include";"$(SM_API_CPP_WRAPPERS)\include";"$(SM_API_QTDIR)\include";"$(SM_API_WIDGETS)\include";"$(SolutionDir)\FTNoIR_Tracker_UDP";"$(SolutionDir)\FTNoIR_Filter_EWMA2"" + AdditionalIncludeDirectories=".\GeneratedFiles;"$(QTDIR)\include";".\GeneratedFiles\$(ConfigurationName)";"$(QTDIR)\include\QtCore";"$(QTDIR)\include\QtNetwork";"$(QTDIR)\include\QtGui";"$(QTDIR)\include\QtOpenGL";"$(QTDIR)\include\QtWebKit";"$(QTDIR)\include\QtTest";"$(SM_API_PATH)\include";"$(SM_API_CPP_WRAPPERS)\include";"$(SM_API_QTDIR)\include";"$(SM_API_WIDGETS)\include";"$(SolutionDir)\FTNoIR_Tracker_UDP";"$(SolutionDir)\FTNoIR_Tracker_UDP\GeneratedFiles";"$(SolutionDir)\FTNoIR_Filter_EWMA2"" PreprocessorDefinitions="UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_THREAD_SUPPORT;QT_NO_DEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_OPENGL_LIB;QT_NETWORK_LIB;QT_DLL" RuntimeLibrary="2" FloatingPointModel="2" @@ -262,7 +262,7 @@ @@ -288,7 +288,7 @@ @@ -314,7 +314,7 @@ @@ -340,7 +340,7 @@ @@ -370,7 +370,7 @@ @@ -396,7 +396,7 @@ @@ -426,7 +426,7 @@ @@ -452,7 +452,7 @@ @@ -478,7 +478,7 @@ @@ -512,7 +512,7 @@ @@ -542,7 +542,7 @@ @@ -568,7 +568,7 @@ diff --git a/FaceTrackNoIR/tracker.cpp b/FaceTrackNoIR/tracker.cpp index 5a2d07a2..c8208023 100644 --- a/FaceTrackNoIR/tracker.cpp +++ b/FaceTrackNoIR/tracker.cpp @@ -138,6 +138,7 @@ QLibrary *filterLib; if (ptrXyz) { pTracker = ptrXyz; + pTracker->Initialize(); qDebug() << "Tracker::setup Function Resolved!"; } } -- cgit v1.2.3