Skip to content

Commit

Permalink
Some tests regarding threading
Browse files Browse the repository at this point in the history
  • Loading branch information
Pierre Ferran committed May 10, 2017
1 parent fa68744 commit 5e74214
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 30 deletions.
25 changes: 20 additions & 5 deletions vSMR/SMRPlugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,11 @@ bool startThreadvStrips = true;
using namespace SMRPluginSharedData;
asio::ip::udp::socket* _socket;
asio::ip::udp::endpoint receiver_endpoint;
std::thread vStripsThread;
//std::thread vStripsThread;
char recv_buf[1024];

vector<CSMRRadar*> RadarScreensOpened;

void datalinkLogin(void * arg) {
string raw;
string url = baseUrlDatalink;
Expand Down Expand Up @@ -264,7 +266,7 @@ void vStripsReceiveThread(const asio::error_code &error, size_t bytes_transferre
}
}

void vStripsThreadFunction()
void vStripsThreadFunction(void * arg)
{
try
{
Expand Down Expand Up @@ -321,7 +323,8 @@ CSMRPlugin::CSMRPlugin(void):CPlugIn(EuroScopePlugIn::COMPATIBILITY_CODE, MY_PLU

try
{
vStripsThread = std::thread(vStripsThreadFunction);
//vStripsThread = std::thread();
_beginthread(vStripsThreadFunction, 0, NULL);
}
catch (std::exception& e)
{
Expand All @@ -341,7 +344,7 @@ CSMRPlugin::~CSMRPlugin()
try
{
io_service.stop();
vStripsThread.join();
//vStripsThread.join();
}
catch (std::exception& e)
{
Expand Down Expand Up @@ -634,8 +637,20 @@ CRadarScreen * CSMRPlugin::OnRadarScreenCreated(const char * sDisplayName, bool
{
Logger::info(string(__FUNCSIG__));
if (!strcmp(sDisplayName, MY_PLUGIN_VIEW_AVISO)) {
return new CSMRRadar();
CSMRRadar* rd = new CSMRRadar();
RadarScreensOpened.push_back(rd);
return rd;
}

return NULL;
}

//---EuroScopePlugInExit-----------------------------------------------

void __declspec (dllexport) EuroScopePlugInExit(void)
{
for each (auto var in RadarScreensOpened)
{
var->EuroScopePlugInExitCustom();
}
}
46 changes: 30 additions & 16 deletions vSMR/SMRRadar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ int LeaderLineDefaultlenght = 50;
//

bool initCursor = true;
HCURSOR smrCursor;
HCURSOR smrCursor = NULL;
bool standardCursor;
WNDPROC gSourceProc;
HWND pluginWindow;
Expand Down Expand Up @@ -95,8 +95,15 @@ CSMRRadar::CSMRRadar()
CSMRRadar::~CSMRRadar()
{
Logger::info(string(__FUNCSIG__));
this->OnAsrContentToBeSaved();
this->EuroScopePlugInExitCustom();
try {
this->OnAsrContentToBeSaved();
//this->EuroScopePlugInExitCustom();
}
catch (exception &e) {
stringstream s;
s << e.what() << endl;
AfxMessageBox(string("Error occured " + s.str()).c_str());
}
// Shutting down GDI+
GdiplusShutdown(m_gdiplusToken);
}
Expand Down Expand Up @@ -309,15 +316,18 @@ void CSMRRadar::OnMoveScreenObject(int ObjectType, const char * sObjectId, POINT
else if (strcmp(sObjectId, "resize") == 0)
smrCursor = CopyCursor((HCURSOR)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_SMRRESIZE), IMAGE_CURSOR, 0, 0, LR_SHARED));

AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
//AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
AFX_MANAGE_STATE(AfxGetStaticModuleState())
SetCursor(smrCursor);
standardCursor = false;
}
} else
{
if (!standardCursor)
{
smrCursor = CopyCursor((HCURSOR)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_SMRCURSOR), IMAGE_CURSOR, 0, 0, LR_SHARED));
AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
AFX_MANAGE_STATE(AfxGetStaticModuleState())
SetCursor(smrCursor);
standardCursor = true;
}
}
Expand All @@ -331,15 +341,17 @@ void CSMRRadar::OnMoveScreenObject(int ObjectType, const char * sObjectId, POINT
if(standardCursor)
{
smrCursor = CopyCursor((HCURSOR)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_SMRMOVETAG), IMAGE_CURSOR, 0, 0, LR_SHARED));
AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
AFX_MANAGE_STATE(AfxGetStaticModuleState())
SetCursor(smrCursor);
standardCursor = false;
}
} else
{
if (!standardCursor)
{
smrCursor = CopyCursor((HCURSOR)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_SMRCURSOR), IMAGE_CURSOR, 0, 0, LR_SHARED));
AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
AFX_MANAGE_STATE(AfxGetStaticModuleState())
SetCursor(smrCursor);
standardCursor = true;
}
}
Expand Down Expand Up @@ -390,7 +402,8 @@ void CSMRRadar::OnMoveScreenObject(int ObjectType, const char * sObjectId, POINT
{
smrCursor = CopyCursor((HCURSOR)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_SMRMOVEWINDOW), IMAGE_CURSOR, 0, 0, LR_SHARED));

AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
AFX_MANAGE_STATE(AfxGetStaticModuleState())
SetCursor(smrCursor);
standardCursor = false;
}
}
Expand All @@ -399,7 +412,8 @@ void CSMRRadar::OnMoveScreenObject(int ObjectType, const char * sObjectId, POINT
if (!standardCursor)
{
smrCursor = CopyCursor((HCURSOR)::LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDC_SMRCURSOR), IMAGE_CURSOR, 0, 0, LR_SHARED));
AfxGetMainWnd()->SendMessage(WM_SETCURSOR);
AFX_MANAGE_STATE(AfxGetStaticModuleState())
SetCursor(smrCursor);
standardCursor = true;
}
}
Expand Down Expand Up @@ -1509,6 +1523,7 @@ void CSMRRadar::OnFlightPlanDisconnect(CFlightPlan FlightPlan)
}
}

/*
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
Expand All @@ -1519,7 +1534,7 @@ LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
default:
return CallWindowProc(gSourceProc, hwnd, uMsg, wParam, lParam);
}
}
}*/

void CSMRRadar::OnRefresh(HDC hDC, int Phase)
{
Expand All @@ -1531,8 +1546,8 @@ void CSMRRadar::OnRefresh(HDC hDC, int Phase)

if (smrCursor != nullptr)
{
pluginWindow = GetActiveWindow();
gSourceProc = (WNDPROC)SetWindowLong(pluginWindow, GWL_WNDPROC, (LONG)WindowProc);
//pluginWindow = GetActiveWindow();
//gSourceProc = (WNDPROC)SetWindowLong(pluginWindow, GWL_WNDPROC, (LONG)WindowProc);
}
initCursor = false;
}
Expand Down Expand Up @@ -2737,11 +2752,10 @@ void CSMRRadar::OnRefresh(HDC hDC, int Phase)

void CSMRRadar::EuroScopePlugInExitCustom()
{
Logger::info(string(__FUNCSIG__));
AFX_MANAGE_STATE(AfxGetStaticModuleState())

if (smrCursor != nullptr)
/*if (smrCursor != nullptr && smrCursor != NULL)
{
SetWindowLong(pluginWindow, GWL_WNDPROC, (LONG)gSourceProc);
}
}
}*/
}
1 change: 1 addition & 0 deletions vSMR/SMRRadar.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <time.h>
#include <sstream>
#include <GdiPlus.h>
#include <sstream>
#define _USE_MATH_DEFINES
#include <math.h>
#include "Constant.hpp"
Expand Down
8 changes: 0 additions & 8 deletions vSMR/vSMR.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,3 @@ void __declspec (dllexport) EuroScopePlugInInit(EuroScopePlugIn::CPlugIn ** ppPl
// create the instance
* ppPlugInInstance = theApp.gpMyPlugin = new CSMRPlugin();
}


//---EuroScopePlugInExit-----------------------------------------------

void __declspec (dllexport) EuroScopePlugInExit(void)
{
delete theApp;
}
2 changes: 1 addition & 1 deletion vSMR/vSMR.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
<AdditionalDependencies>..\lib\EuroScopePlugInDll.lib;..\lib\libcurld.lib</AdditionalDependencies>
<IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries>
<AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalOptions>/IGNORE:4099 /NODEFAULTLIB:LIBCMTD %(AdditionalOptions)</AdditionalOptions>
<AdditionalOptions>/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions>
</Link>
<Midl>
<MkTypLibCompatible>false</MkTypLibCompatible>
Expand Down

0 comments on commit 5e74214

Please sign in to comment.